hadoophdfs-在虚拟机上执行jar文件

am46iovg  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(327)

我用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>

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

ctehm74n

ctehm74n1#

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

相关问题