Java从命令行运行jar : Error could not find or load main class com. test.Main

标签 java intellij-idea command-line jogl

Windows 控制台命令:

c:\..path..>java -jar TestApp.jar

结果:错误无法找到或加载主类 com.test.Main

我正在使用 IntelliJ 14,我的工件布局如下所示:

TestApp.jar/
--client.jar <----- com.test.Main is located here

--jogl/
----gluegen.jar
----jogl-all.jar

--META-INF/
----manifest.mf

list 文件信息:

Main-Class: com.test.Main
Class-Path: client.jar;jogl/gluegen-rt.jar;jogl/jogl-all.jar;

但是当我在 IntelliJ 中运行代码时,它是成功的。

最佳答案

恐怕你不能,因为默认的类加载器无法从 jar-with-a-jar 加载。我想 IntelliJ 会扩展这些 jar 并因此工作。

请参阅此处:Reference jars inside a jar

但是有一个解决方案。我使用 maven- assembly-plugin 来创建带有依赖项的 autorun-jar。如果我扩展这个 jar,我发现所有 jar 依赖项都在 jar 内扩展。这样,Classloader就可以加载所有的类了。

如果您不使用 maven,IntelliJ 必须有一个选项将项目导出为 autorun-jar 或类似的东西。

编辑

如果 maven 或将项目导出为 autorun-jar 不适合您,也许 One-JAR可以为你的海豚服务,但我没有这个项目的经验。

关于Java从命令行运行jar : Error could not find or load main class com. test.Main,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33016058/

相关文章:

java - java中的UserTransaction问题

java - 在 Eclipse 中的 tomcat 上使用 Struts 运行 Web 应用程序时出现 404 错误

java - HttpClientErrorException getResponseBodyAsString() 无法将字节解析为字符串

linux - 在 linux 中显示磁盘事件的类似 htop 的工具

java - 测量 Java 方法的执行时间

java - libGdx 和 Gradle 的 Scala 实例化错误

java - 无法 Autowiring 。找不到 Neo4jTemplate 类型的 beans

java - 我正在尝试更改 IntelliJ 的 IDE,但它始终运行错误的版本

linux - 有没有办法让 gcc 输出原始二进制文件?

mysql - 将结果从 MySQL 过程传递到 Linux 命令行