【问题标题】:NoClassDefFoundError in simple test简单测试中的 NoClassDefFoundError
【发布时间】:2013-07-05 07:46:04
【问题描述】:

我想使用 moo 进行 dto- 实体转换。但是测试它我得到了这个异常

    Exception in thread "main" java.lang.NoClassDefFoundError: org/mvel2/PropertyAccessException
    at com.codiform.moo.configuration.Configuration.getTranslator(Configuration.java:62)
    at com.codiform.moo.session.TranslationSession.getTranslator(TranslationSession.java:131)
    at com.codiform.moo.session.TranslationSession.translate(TranslationSession.java:122)
    at com.codiform.moo.session.TranslationSession.getTranslation(TranslationSession.java:64)
    at com.codiform.moo.curry.Translate.from(Translate.java:63)
    at Main.main(Main.java:15)
Caused by: java.lang.ClassNotFoundException: org.mvel2.PropertyAccessException
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 6 more

是不是因为我做错了什么?这是我的代码:

import com.codiform.moo.curry.Translate;


public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
Guld guld1=new Guld("string from guld", "muck around", 5);
GuldDTO guld1DTO;
GuldDTO testclassload = new GuldDTO("ruks","halim",3);

guld1DTO=Translate.to(GuldDTO.class).from(guld1);
        //Beca beca1 = new Beca ()

System.out.println(guld1);
System.out.println(guld1DTO);
    }

}

public class Guld {

    private String fielk1;
    private String rupo;
    private Integer higs;
    public Guld(){

    }
    public Guld(String fielk1, String rupo, Integer higs) {

        this.fielk1 = fielk1;
        this.rupo = rupo;
        this.higs = higs;
    }
    public String getFielk1() {
        return fielk1;
    }
    public void setFielk1(String fielk1) {
        this.fielk1 = fielk1;
    }
    public String getRupo() {
        return rupo;
    }
    public void setRupo(String rupo) {
        this.rupo = rupo;
    }
    public Integer getHigs() {
        return higs;
    }
    public void setHigs(Integer higs) {
        this.higs = higs;
    }


}

public class GuldDTO {
    private String fielk1;
    private String rupo;
    private Integer higs;
    public GuldDTO (){

    }
    public GuldDTO(String fielk1, String rupo, Integer higs) {

        this.fielk1 = fielk1;
        this.rupo = rupo;
        this.higs = higs;
    }
    public String getFielk1() {
        return fielk1;
    }
    public void setFielk1(String fielk1) {
        this.fielk1 = fielk1;
    }
    public String getRupo() {
        return rupo;
    }
    public void setRupo(String rupo) {
        this.rupo = rupo;
    }
    public Integer getHigs() {
        return higs;
    }
    public void setHigs(Integer higs) {
        this.higs = higs;
    }

}

如果有任何其他细节我应该提供,请告诉。 [显然我无法通过检查代码与文本比率的 stackoverflow 过滤器。][完成]

【问题讨论】:

  • 你的代码依赖于org.mvel2.PropertyAccessException类,封装在this jar
  • 感谢您的快速链接

标签: java object-object-mapping


【解决方案1】:

ClassNotFoundException excption 表示该类缺少该类的添加库并再次运行。 首先检查您的应用程序是否具有此类,否则请添加 mvel 库。

可在:http://grepcode.com/snapshot/repo1.maven.org/maven2/org.mvel/mvel2/2.1.4.Final/

【讨论】:

  • 感谢我没有使用 maven,不知何故我期待 moo 包含所有依赖项。另外,我从未听说过 mvel,所以我认为它是 Moo 的一部分,而不是重用组件
【解决方案2】:

当你对那个类有依赖并且它不在你的项目的依赖列表中时,你会看到java.lang.NoClassDefFoundError

那么,你需要做的是:

org.mvel2.PropertyAccessException 类的jar 外部添加到您的项目中

罐子可用here

【讨论】:

    【解决方案3】:

    正如上面其他人已经说过的,您缺少一个类文件,您需要在您的classpath 中添加所需的 jar 文件。为了检查类的加载方式和位置,您可以将-verbose:class 传递给java exe。这将显示程序运行时加载的类的跟踪。对于调试此类问题很有用。

    【讨论】:

    • 感谢您的提示,我没有足够的代表投票赞成/反对
    猜你喜欢
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 2018-07-06
    相关资源
    最近更新 更多