我有一个Maven项目mjbean只有一个依赖项:TestA.这是mjbean的pom.xml:
主要课程非常简单:
package com.mbean;
import com.testa.Testcl;
public class Main {
public static void main(String[] args) {
Testcl tcl = new Testcl();
tcl.testmethod();
}
}
我已经指定了主类< Main-Class> com.mbean.Main< / Main-Class>在maven-bundle-plugin中.它与Eclipse运行良好.然后我使用Eclipse在目标文件夹中生成目标包.当我尝试在命令行中运行它:java -jar mjbean-0.0.1-SNAPSHOT.jar时,我收到此错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/testa/Testcl
at com.mbean.Main.main(Main.java:12)
Caused by: java.lang.ClassNotFoundException: com.testa.Testcl
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
谁能帮我这个?
最佳答案
Main-Class isn’t part of the OSGi bundle standard,我不相信maven-bundle-plugin能识别它.
您可以按照使用现有MANIFEST.MF文件的说明进行操作并添加指令
<_include>src/main/resources/Meta-INF/MANIFEST.MF
然后在该文件中包含Main-Class指令.这有点笨重,这可能表明你正在使用错误的工具来完成工作.如果你只需要一个可执行的jar文件,那么其他Maven插件可能更合适,比如maven-jar-plugin.