Eclipseで実行可能なjarファイルを作ることができます。それがast.jar
と呼ばれ、MainクラスがASTExplorerであるとしましょう。これがjava -jar ast.jar
で動作することを確認できます。実行可能な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 -jar ast.jar'を実行するときのクラスパスは何ですか? jarファイルを展開すると、クラスパスは '.'になります。私は環境変数CLASSPATHが 'java -jar ast.jar'が動作するように設定されていると推測しています。 – km1