我正在尝试为我的一个文件(Worker.java)创建一个jar文件。该文件位于src /文件夹中的beatDB包中。
要创建我运行的jar jar cfm InitializeInstanceWorker.jar Manifest.txt -C src/ .
,我的Manifest.txt包含:Main-Class: Main-Class: beatDB.Worker \n
,最后有一个新行。
当我调用java beatDB/Worker
文件运行时,但是当我尝试运行jar文件时,java.lang.ClassDefNotFoundException:
Exception in thread "main" java.lang.NoClassDefFoundError: com/amazonaws/auth/AWSCredentialsProvider
Caused by: java.lang.ClassNotFoundException: com.amazonaws.auth.AWSCredentialsProvider
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
我的lib文件夹中有aws-java-sdk-1.7.7.jar
,它位于类路径中,我在.bash_profile文件中设置。
有谁知道为什么直接运行java文件,但是jar文件没有运行?
答案 0 :(得分:0)
您可以运行jar/main class
的方式是:
java -cp InitializeInstanceWorker.jar;lib\aws-java-sdk-1.7.7.jar beatDB.Worker
或者
java -cp lib \ aws-java-sdk-1.7.7.jar beatDB.Worker -jar InitializeInstanceWorker.jar`
或者,如果您在jar中添加属性Class-Path: lib/
,则可以通过以下方式运行它:
java -jar InitializeInstanceWorker.jar
希望它有所帮助!