【问题标题】:Ubuntu Java -jar error: Could not find or load main classUbuntu Java -jar 错误:无法找到或加载主类
【发布时间】:2014-05-10 10:02:02
【问题描述】:

我开发了一个简单的java程序,它只有一个主类如下:

public class HelloTest {

  public static void main(String[] args){
     System.out.println("@@@@@@@@@@@@ Hello World! From HelloTest!! ");
  }
}

我使用maven组装插件将这个程序打包为一个可运行的jar,jar包结构如下:

Test3-0.0.1-assembly.jar

|-----META-INF
|         |
|         |---MANIFEST.MF
|
|-----Test3-0.0.1.jar

这是清单文件:

Manifest-Version: 1.0
Build-Jdk: 1.6.0_18
Class-Path: Test3-0.0.1.jar
Created-By: Apache Maven
Main-Class: com.example.HelloTest
Archiver-Version: Plexus Archiver

运行 'mvn clean packge' 后,maven 在目标目录下生成程序集 jar,但是 程序集 jar 的清单文件缺少 'Class-Path' 字段,所以我必须添加 'Class-使用winrar手动路径'。不知道是不是maven组装插件bug...

最后,我在 Windows 中使用“java -jar Test3-0.0.1-assembly.jar”,它工作正常。 但是我将jar复制到linux(ubuntu),使用相同的命令'java -jar Test3-0.0.1-assembly.jar',它显示错误:找不到或加载主类com.example.HelloTest。

我真的不知道为什么它在两个系统中看起来如此不同,只是同一个罐子。谁能告诉如何解决这个问题(使 jar 可以在 linux 中运行)?谢谢。

【问题讨论】:

  • 你改变了jar的执行权限吗?
  • 能否请您发布组装插件的配置?

标签: java linux jar manifest


【解决方案1】:

我使用maven-jar-plugin 生成MANIFEST。这是我的配置,也许这​​会有所帮助:

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <mainClass>com.example.MainClass</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

【讨论】:

  • 是的,我试过 maven jar 插件,但它的可运行 jar 只包含程序原始类文件。我的要求是我想将所有依赖 jar 包中的可运行 jar 打包到其中。所以我选择使用maven组装插件,生成的runnable jar可以在windows下运行,但是在ubuntu下会报错。
  • 嗯,所以这可能是 Juned Ahsan 所说的许可。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-31
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
相关资源
最近更新 更多