使用Eclipse导出jar包并运行它

22 浏览
0 Comments

使用Eclipse导出jar包并运行它

我在Ubuntu 12.04上使用Eclipse 3.7。

在一个特定的Eclipse项目中,我有五个.java文件在src文件夹中。除了binlibsrc文件夹之外,项目文件夹中还有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文件时添加了主类。现在,在执行它时,它抛出了mysql连接器jar的“ClassNotFoundException”。尽管该jar包已包含在在制作jar包时添加的lib文件夹中。

Exception in thread \"main\" java.lang.RuntimeException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

第二次修改

相关输出。

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

其中./lib/包含所有的依赖库。

它给出了这个错误:

Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at polygonprobability.Model.readTestingData(Model.java:178)
    at polygonprobability.Model.(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

对于以下命令:

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

它给出了错误:

Exception in thread "main" java.lang.NoClassDefFoundError: /lib64
Caused by: java.lang.ClassNotFoundException: .lib64
    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)
Could not find the main class: /lib64. Program will exit.

admin 更改状态以发布 2023年5月22日
0
0 Comments

运行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

0
0 Comments

尝试以下步骤:

  1. 导出不包含主类的不可运行jar文件(跳过下一步)
  2. 然后执行以下命令:java -cp /path/to/lib/*:yourjar.jar pkg.MainClass -info file.properties

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

0