【问题标题】:java.lang.NoClassDefFoundError jar applicationjava.lang.NoClassDefFoundError jar 应用程序
【发布时间】:2015-07-01 19:44:08
【问题描述】:

我有一个使用 Netbeans 8 (linux) 的 maven 项目。

我的项目是一个 maven 应用程序,我必须将其“导出”为 JAR 可运行的 JAVA 应用程序。虽然我在 Netbeans 中开发系统,但在 maven 依赖项下一切正常,但在目标文件夹中编译并生成 .jar 文件后,我收到错误 NoClassDefFoundError。在我通过谷歌搜索时,我发现这个问题是当我在开发环境中有依赖项时引起的,而不是在使用类路径编译时引起的。

一种解决方案是将依赖项 jar 作为库包含在项目中,但这样我就失去了 maven 功能。我不想成功,以防万一。

如何在项目内不添加依赖作为库的情况下解决此问题?

非常感谢!

【问题讨论】:

  • 请发布您的 pom.xml 文件

标签: java netbeans maven-2


【解决方案1】:

您没有使用正确的 maven 插件来生成可运行的 JAR,这意味着其中包含所有依赖项的 jar。 这是它的样子

<plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <finalName>.....</finalName>
        <outputDirectory>${basedir}</outputDirectory>
        <archive>
        <manifest>
            <mainClass>......</mainClass>
        </manifest>
        </archive>
        <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
    <executions>
        <execution>
        <phase>package</phase>
        <goals>
            <goal>single</goal>
        </goals>
        </execution>
    </executions>
    </plugin>
</plugins>

你配置的是标准的maven插件来生成jar文件,但是没有包含依赖。

【讨论】:

  • 嘿,谢谢你的回答,但实际上我没有在 pom.xml 文件的依赖项中设置范围。但是尝试使用 compile 进行测试,但不起作用 =/
  • iullianr:伙计,你今天刚刚救了我的命,非常感谢你,上帝保佑你! ^^
【解决方案2】:

产生错误的是 Hibernate 和 POI。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.print.Main</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

<repositories>
    <repository>
        <id>unknown-jars-temp-repo</id>
        <name>"mvn deploy:deploy-file -Durl=file:///var/www/projetos/041print-proc/lib/ -Dfile=hibernate-core-4.3.10.Final.jar -DgroupId=org.hibernate -DartifactId=hibernate-core -Dpackaging=jar -Dversion=4.3.10.Final"</name>
        <url>file:${project.basedir}/lib</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.10.Final</version>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.4-1201-jdbc41</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.12</version>
    </dependency>
    <dependency>
        <groupId>org.apache.xmlbeans</groupId>
        <artifactId>xmlbeans</artifactId>
        <version>2.6.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>3.12</version>
    </dependency>
    <dependency>
        <groupId>dom4j</groupId>
        <artifactId>dom4j</artifactId>
        <version>1.6.1</version>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.3</version>
    </dependency>
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.9</version>
    </dependency>
</dependencies>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
</properties>
<name>041 Print Processadores</name>
<description>Processadores de Texto para Dados Variáveis</description>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 2020-04-09
    • 2016-01-19
    • 2014-10-30
    相关资源
    最近更新 更多