仅在运行时出现java / NoClassDefFoundError错误

时间:2014-09-21 18:36:35

标签: java maven netbeans error-handling runtime-error

我在添加一个允许我的主类发送电子邮件的类的JAR文件时遇到了麻烦。

我做了什么......

  • 将EmailAPI.jar文件保存在我的文件夹中,如下面POM文本中所述(并找到它,因为在NetBeans中我可以浏览该类)
  • 更新了我的POM文件中的依赖项,如下所示:

    <dependency>
        <groupId>EmailAPI</groupId>
        <artifactId>EmailAPI</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${basedir}\src\lib\EmailAPI.jar</systemPath>
    </dependency>
    
  • 添加导入(当我使用Email类时,NetBeans自动添加了这个,所以它似乎知道在哪里看...)

    导入me.nrubin29.emailapi.Email;

  • 直接使用提供的结构调用该类

    //send an email
    new Email()
            .withSMTPServer("smtp.gmail.com")
            .withUsername("xxxxx@gmail.com")
            .withPassword("xxxxxxx")
            .withTo("xxxxx@gmail.com; xxxxx@gmail.com")
            .withSubject("[RP] Server has started")
            .withBody("This is the body!")
            .send();
    

我可以构建得很好,一切正常......但是当我尝试运行它(作为Minecraft的插件)时,我得到一个NoClassDefFoundError,如下所示: http://pastebin.com/V33gCLVG

我不明白我在这里缺少什么。谁能指出我正确的方向?

3 个答案:

答案 0 :(得分:1)

这意味着您在运行时环境中缺少jar。您可能需要将maven依赖项的范围更改为compile。

答案 1 :(得分:1)

您使用<scope>system</scope>。它可以在Minecraft环境中使用吗?请参阅Maven, Introduction to the Dependency Mechanism, Dependency Scope&#34;此范围类似于provided [...]&#34; 以及提供的&#34;表示您希望容器在运行时提供依赖关系。&#34;

答案 2 :(得分:1)

EmailAPI需要两个JAR才能运行。我认为他们是激活和邮件或其他东西。我可以看看这个项目,但我想你可能会错过它们。