【问题标题】:Hadoop HDFS - executing JAR file on virtual machineHadoop HDFS - 在虚拟机上执行 JAR 文件
【发布时间】:2018-09-12 03:37:04
【问题描述】:

我在 NetBeans 中使用 Maven 构建了一个 Java 应用程序。当我构建主项目(运行 -> 构建主项目)时,我得到了一个名为 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>

所以我认为依赖项和类路径没有问题。非常感谢您的帮助。

【问题讨论】:

    标签: java maven hadoop netbeans hdfs


    【解决方案1】:

    将您的 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>
    

    【讨论】:

    • 确切地说,你必须提到类名的完整路径(相对于包的路径)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 2013-11-25
    • 2014-03-03
    • 2012-04-25
    • 1970-01-01
    相关资源
    最近更新 更多