我可以用Eclipse制作一个可执行的jar文件。假设它叫做ast.jar
,而Main类是ASTExplorer。我可以验证这是否适用于java -jar ast.jar
。eclipse后面的魔法生成可执行jar文件
然后,我将jar文件解压到一个单独的目录中,并验证ASTExplorer是否在astexplorer目录中。但是当我执行这个命令java -cp . astexplorer.ASTExplorer
我得到这个错误。
java -cp . astexplorer/ASTExplorer
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Composite
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
问题是jar文件中没有org/eclipse/swt目录。
什么是可执行的JAR文件背后的魔力?解压缩时为什么不运行?
你应该尝试用蚂蚁创造你的JAR,而不是蚀食黑魔法。 –
你是什么类路径,当你运行'Java的罐子ast.jar'。当你解压jar文件时,你的类路径是'.'。我猜测有一个环境变量CLASSPATH设置为允许'java -jar ast.jar'工作。 – km1