java - Hadoop HDFS - 在虚拟机上执行 JAR 文件

标签 java maven hadoop netbeans hdfs

我在 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/

相关文章:

java - 测量 Spring RestTemplate HTTP 请求时间

java - sam build 无法定位 pom.xml 文件

java - Jenkins maven无法在JDK中找到Javac编译器

hadoop - Hadoop Map/Reduce作业进度计数器

hadoop - 不允许Datanode连接到Hadoop 2.3.0集群中的Namenode

java - TimerTask 无法更新 JavaFX 标签文本

java - 单击时如何从 JButton 中获取文本?

java - --add-modules 仅在编译时

hadoop - 启动 Hive 时出错 : java. lang.NoClassDefFoundError: org/apache/hadoop/hive/conf/HiveConf

java - 如何正确设置匿名类中的字段并在主类中使用它们?