嘿所以我一直在研究一个项目,我希望能够从命令行作为可执行jar运行。我已经能够使用Mavens assembly:single命令创建具有依赖关系的jar。我的pom看起来像这样。运行带有依赖项的可执行jar的问题
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.3</version>
<configuration>
<archive>
<manifest>
<mainClass>org.openmetadata.main.OmadUpdate</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
构建成功,并创建罐子omad更新-0.0.1-SNAPSHOT-JAR-与-dependencies.jar。我去我的项目目标文件夹中的命令行,然后键入
java -jar omad-update-0.0.1-SNAPSHOT-jar-with-dependencies.jar
我也曾尝试
java -cp omad-update-0.0.1-SNAPSHOT-jar-with-dependencies.jar org.openmetadata.main.OmadUpdate
不幸的是,我给一个java.lang.NoClassDefFoundError每种情况:组织/ openmetadata /主/ OmadUpdate。我很困惑,因为我知道我的主类是在包org.openmetadata.main中,但它没有找到。我觉得这特别令人困惑,因为在我的朋友中,我将这个班级指定为我的班级。我已经尝试将主类的名称更改为src.main.java.org.openmetadata.main.OmadUpdate,并简单地更改OmadUpdate,但似乎都没有效果。感谢您提前提供任何帮助。
但根据此页[链接](http://maven.apache.org/plugins/maven-assembly-plugin/usage.html#aResources)它似乎没有,我必须指定一个类路径,它似乎是它会根据需要简单地打包Maven依赖项。尽管如此,我认为我可能会犯错。 – decal 2012-03-28 20:23:02
打开您的jar文件并在META-INF目录中查找MANIFEST.MF文件。是否指定了类路径? – Mike 2012-03-28 20:25:37
好吧,我在Mavens [网站](http://maven.apache.org/shared/maven-archiver/examples/classpath.html#aMake)上发现,将 true addClasspath>添加到我的pom.xml应该照顾classpath,但是当我尝试运行可执行jar时,仍然遇到我的Main类无法找到的问题。 –
decal
2012-03-30 14:43:59