Netbeansと.jarファイル(ダブルクリック)の両方で、開発用コンピューターで正常に実行されるJavaプログラムを正常に作成しました。問題は、JDKがない、またはコマンドラインを使用して起動しないコンピューターでは起動しないことです(フラグjava -jar jarfile.jar
がないと起動しないことに注意してください)。-jar
開発用コンピューターでも、jarファイルは-jar
コマンドラインにフラグがない状態で実行されません。
プログラムが起動しないすべての状況で発生するエラーは次のとおりです。
S:\Folder>Program.jar
Exception in thread "main" java.lang.NoClassDefFoundError: S:\Folder\Program/jar
Caused by: java.lang.ClassNotFoundException: S:\Folder\Program.jar
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: S:\Folder\Program.jar. Program will exit.
のファイル構造は次のようになりProgram.jar
ます。
Program.jar
binlib
build.xml
manifest.mf
onejar.mf
one-jar-ant-task.xml
com
simontuffs
onejar
a lot of classes related to OneJar
doc
one-jar-license.txt
lib
itextpdf-5.3.3.jar
main
main.jar
my
package
all the classes related to my program
META-INF
manifest.mf
Resources
all my programs resources
txt
more resources
META-INF
MANIFEST.MF
.version
OneJar.class
プロジェクトはNetbeansとOneJarを使用してコンパイルされ、必要なすべてのライブラリ(この場合はiText)を同じjarファイルに入れて、ユーザーを支援します。2つのファイルよりも1つのファイルだけの方が簡単です。
jarファイルのルートにMANIFEST.MF
あるフォルダー内のファイルには、次のものが含まれています。META-INF
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: One-Jar 0.97 Ant taskdef
Main-Class: com.simontuffs.onejar.Boot
One-Jar-Main-Class: my.package.MainClass
Class-Path: lib/itextpdf-5.3.3.jar
これはOneJarによって自動的に生成されるため、メインクラスへの実際のパスには/main/main.jar/
、パスがルートに関連している場合も含まれますが、正しいと思います。
MANIFEST.MF
内部jarファイル(実際のプログラム)のは空です。binlib
フォルダ内の1つには、次のものが含まれています。
Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build
Main-Class: my.package.MainClass
jarを実行するにはどうすればよいですか?