Eclipseで実行可能なjarファイルを作成できます。ast.jar
それがと呼ばれ、メインクラスが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ファイルの背後にある魔法は何ですか?解凍すると実行されないのはなぜですか?