Java文件运行但不是Jar文件

时间:2015-04-09 04:20:01

标签: java eclipse jar aws-sdk

我正在尝试为我的一个文件(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文件没有运行?

1 个答案:

答案 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

希望它有所帮助!