我在 NetBeans 中使用 Maven 构建了一个 Java 应用程序。当我构建 Main 项目(运行 -> 构建 Main 项目)时,我得到了一个名为 ROVKP_3zad-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>
所以我认为依赖项和类路径没有问题。非常感谢您的帮助。
最佳答案
将您的 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>com.mycompany.rovkp_3zad.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
关于java - Hadoop HDFS - 在虚拟机上执行 JAR 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49619415/