我可以用 Eclipse 制作一个可执行的 jar 文件。假设它被称为ast.jar
,并且 Main 类是 ASTExplorer。我可以验证这是否适用于java -jar ast.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 文件背后的魔力是什么?为什么解压后不运行?