Maven JAR - 没有找到类异常

时间:2014-02-14 12:24:51

标签: 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”));

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

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

它们并不是为了实际运行东西而只是为了编译东西,它们实际上并没有任何内容,因为有些版权或我忘记的任何问题。

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

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

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

或者(我经常做的允许测试用例)你可以包含一个类似于jboss的实际实现。

答案 1 :(得分:0)

试试这个:

  1. 右键单击包含pom的eclipse项目
  2. 点击Properties
  3. 点击Deployment Assembly
  4. 然后检查您的Maven Dependencies是否在列表中,并且前面的部署路径是WEB-INF/lib

    如有必要,请点击Add...按钮,然后点击ApplyOK按钮。

    enter image description here