【问题标题】:Maven JAR - class not found exceptionMaven JAR - 找不到类异常
【发布时间】: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,如果错误仍然存​​在,请尝试找出该类属于哪个依赖项并尝试添加它。

标签: java maven opencsv


【解决方案1】:

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

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

所以当你定义依赖时你应该声明:

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

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

或者(我经常为测试用例做的事情)你可以包含一个像 jboss 这样的实际实现。

【讨论】:

    【解决方案2】:

    试试这个:

    1. 右键单击包含你的 pom 的 eclipse 项目
    2. 点击Properties
    3. 点击Deployment Assembly

    然后检查您的Maven Dependencies 是否在列表中,并且它们前面的部署路径是WEB-INF/lib

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

    【讨论】:

      猜你喜欢
      • 2014-11-18
      • 2017-07-23
      • 2017-12-19
      • 2014-02-08
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      相关资源
      最近更新 更多