我用netbeans中的maven构建了一个java应用程序。当我构建主项目(run->buildmainproject)时,我得到了一个名为rovkp\u3zad-1.0-snapshot.jar的jar文件,其中只有一个类名为main。然后,我将该jar文件放在虚拟机上,并尝试从命令行(jar文件所在的文件夹)执行此操作:
hadoop jar ROVKP_3zad-1.0-SNAPSHOT.jar com.mycompany.rovkp_3zad.Main
我的错误是:
Exception in thread "main" java.lang.ClassNotFoundException: Main
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.hadoop.util.RunJar.run(RunJar.java:214)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
原因是什么?在我的.pom文件中,除其他外,还定义了:
<name>ROVKP_3zad</name>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
所以我认为依赖关系和类路径没有问题。非常感谢你的帮助。
1条答案
按热度按时间ctehm74n1#
将pom更改为: