java - Maven JAR - 未找到类异常

标签 java maven opencsv

我创建了一个 Maven War 项目并添加了 javaEE API 和 openCSV。 在 Eclipse 中,我可以看到两个 jar,导入类并使用它们,没有任何编译错误。

但是当我使用 tomcat 运行应用程序并尝试保存 CSV 文件时,出现此异常:

java.lang.NoClassDefFoundError: au/com/bytecode/opencsv/CSVWriter

JavaEE api 工作正常。

我尝试添加编译,但没有任何效果。

这是我的 pom:

<modelVersion>4.0.0</modelVersion>
<groupId>com.training</groupId>
<artifactId>DevProject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>7.0</version>
    </dependency>
    <dependency>
        <groupId>net.sf.opencsv</groupId>
        <artifactId>opencsv</artifactId>
        <version>2.3</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>

这是抛出异常的代码: CSVWriter writer = new CSVWriter(new FileWriter("file.csv"));

有什么想法吗?

最佳答案

默认的 java ee api 嗯...搞砸了。

它们并不意味着实际运行东西,而只是编译东西,由于某些版权或我忘记的任何问题,它们实际上没有任何内容。

因此,当您定义依赖项时,您应该声明:

<dependency>
     <groupId>javax</groupId>
     <artifactId>javaee-api</artifactId>
     <version>7.0</version>
     <scope>provided</scope>
 </dependency>

请注意额外的“范围”并将实际实现添加到您的运行时。

或者(我经常这样做以允许测试用例)您可以包含像 jboss 这样的实际实现。

关于java - Maven JAR - 未找到类异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21779364/

相关文章:

java - 将类型 T 的对象插入通用列表

maven - Intellij 中不存在错误包,但在 Spring Tool Suite STS 中工作

java - cxf-codegen-plugin 不生成源代码

java - ResultSet 转 CSV 格式字符串

java - 将用户输入与 Java 中的属性文件进行比较

java - 如何使用 request.setAttribute() 通过单击链接来设置和传递值

Maven 版本插件不遵守代理设置

java - 将java对象写入.csv

java - 使用 opencsv 搜索

java - 如果存在构造函数,如何使 JUnit 测试失败?