【发布时间】:2014-02-14 12:24:50
【问题描述】:
我创建了一个 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"));
有什么想法吗?
【问题讨论】:
-
您在部署的工件中缺少一个/多个依赖项。
-
这取决于 Eclipse(我猜)如何在 Tomcat 中运行您的应用程序。您是否尝试过打包 WAR(使用 Maven)并将其部署在“真正的”Tomcat 上?
-
请尝试
javaee-api版本6.0而不是7.0,它的范围应该是provided,如果错误仍然存在,请尝试找出该类属于哪个依赖项并尝试添加它。