Java 使用Eclipse导出jar,然后运行它

Java 使用Eclipse导出jar,然后运行它,java,eclipse,Java,Eclipse,我正在Ubuntu 12.04上使用Eclipse3.7 我在src文件夹中的某个Eclipse项目中有五个.java文件。项目文件夹(除了bin、lib和src文件夹外,help文件和properties文件以及某些输入文件 我需要用java文件创建一个.jar文件,并将其与属性文件一起作为参数从命令行执行 例如: java-jar.jar-info file.properties 我使用Eclipse将项目作为.jar文件导出到bin文件夹中 我将所有输入文件、properties文件和he

我正在Ubuntu 12.04上使用Eclipse3.7

我在
src
文件夹中的某个Eclipse项目中有五个.java文件。项目文件夹(除了
bin
lib
src
文件夹外,
help
文件和
properties
文件以及某些输入文件

我需要用java文件创建一个
.jar
文件,并将其与属性文件一起作为参数从命令行执行

例如:

java-jar.jar-info file.properties

我使用Eclipse将项目作为
.jar
文件导出到
bin
文件夹中

我将所有输入文件、
properties
文件和
help
文件复制到
dist
文件夹中,然后运行命令

我说了一个错误

Failed to load Main-Class manifest attribute from jar
然后我检查了答案,做了必要的操作(创建了一行清单文件),然后运行了

jar cfm.jar./bin/*.class

它不起作用,抛出了一个
ClassNotFoundException

任何帮助都将不胜感激

编辑

在导出.jar时,我通过选择“Next”而不是“Finish”添加了主类。现在,在执行时,它为mysql连接器jar抛出了一个“ClassNotFoundException”。尽管如此,它还是包含在制作jar时添加的lib文件夹中

线程“main”中的异常java.lang.RuntimeException:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

第二次编辑

相关产出

java-cp./lib/*-jar.jar-info.properties

其中
/lib/
包含所有依赖的jar

它给出了以下错误:

Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at polygonprobability.Model.readTestingData(Model.java:178)
    at polygonprobability.Model.<init>(Model.java:136)
    at polygonprobability.Info.getModel(Main.java:290)
    at polygonprobability.Main.loadInfo(Main.java:138)
    at polygonprobability.Main.operInfo(Main.java:61)
    at polygonprobability.Main.distribute(Main.java:170)
    at polygonprobability.Main.parse(Main.java:81)
    at polygonprobability.Main.main(Main.java:34)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:188)
    at polygonprobability.DatabaseConnect.authorizeSQL(DatabaseConnect.java:50)
    at polygonprobability.Model.readTestingData(Model.java:157)
    ... 7 more

运行jar的命令行应该是

java -jar myJar.jar your.package.ClasswithMainMethod
如果提供了这些错误,请包括它们

我相信你可能特别想要

java -jar myJar.jar your.package.ClasswithMainMethod args
我发现运行程序的最好方法是从项目文件中dist文件夹上方的一步开始,这样您就可以实际运行程序了

java -jar ./dist/myJar.jar your.package.ClasswithMainMethod args 
这样,当您重建Eclipse时,就不会抱怨它无法删除dist文件夹

最后,如果出于某种原因移动了lib路径,请尝试以下操作

java -cp /path/to/lib/*:myJar.jar your.package.ClasswithMainMethod args
试试这些步骤-

  • 导出一个不可运行的jar,但不包括主类(跳过下一部分)
  • 然后执行这个
    java-cp/path/to/lib/*:yourjar.jar pkg.MainClass-info file.properties

  • /path/to/lib/*=所有依赖jar的路径。

    eclipse可以创建一个简单的jar和一个可运行的jar。您是否导出了可运行的jar?请检查我的编辑。:)而且很简单(不是可运行的jar)@wrahool:除了您正在创建的jar之外,您对其他jar有依赖关系吗?@JtheRocker是的。它们在lib文件夹中,我在创建Jar时选择了该文件夹。和-info和file.properties是参数吗?我不确定这是否有效,因为命令需要-info作为参数。这就是运行Jar并修复未声明主类错误的方法。请尝试并报告错误。你不应该做任何事。你需要的所有东西都应该在你的dist文件夹中找到,包括lib文件夹。@wrahool:请告诉我你做了什么?不,Ubuntu。我创建了一个不可运行的jar,并将其放在
    dist
    文件夹中。我将依赖jar放在
    lib
    文件夹中。我看到您使用了这个:java-cp/lib*-jar.jar.Main-info.properties,但我建议这样做:java-cp/path/to/lib/*:.jar.MainClass-info file.properties我很糟糕,我运行了
    java-cp./lib/*-jar.jar.Main-info.properties
    让我们来看看
    java -cp /path/to/lib/*:myJar.jar your.package.ClasswithMainMethod args