java – 运行时的ClassNotFoundException但应用程序编译
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 运行时的ClassNotFoundException但应用程序编译,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2133字,纯文字阅读大概需要4分钟。
内容图文
![java – 运行时的ClassNotFoundException但应用程序编译](/upload/InfoBanner/zyjiaocheng/823/28fe5bb3704d441cb0debd2ff480a561.jpg)
在Java应用程序中,我试图通过在类上使用newInstance()方法来创建类Class1的实例. Class1属于我的项目,但它也需要来自另一个项目的Class2,它位于我已添加到项目中的外部jar中以及Eclipse中的构建路径中. Eclipse似乎找到了Class2,因为它编译项目时没有任何问题,但是当我尝试获取Class1的实例时,它会抛出一个关于Class2的ClassNotFoundException.
这就是Class1的样子:
import other.package.Class2;
public class Class1 implements Class1Interface{
//there's no explicit constructor
@Override
public void method1(String param){
System.out.println("Loading.....");
}
@Override
public void notifyChanges(String param) throws Exception{
Class2 class2 = Class2.getInstance(); //here it's used the Class2 from another jar
...
}
}
这就是我尝试获取它的实例的方法:
String myParam = "blabla";
Class1Interface interf = "my.package.Class1";
try {
interf = (Class1Interface) Class.forName(interfazws).newInstance();
interf.method1(myParam);
} catch (InstantiationException e) {
handle(e);
} catch (IllegalAccessException e) {
handle(e);
} catch (ClassNotFoundException e) {
handle(e);
}
当我执行时,我得到:
Caused by: org.springframework.scheduling.quartz.JobMethodInvocationFailedException: Invocation of method 'execute' on target class [class my.package.myJobJob] failed; nested exception is java.lang.NoClassDefFoundError: other/package/Class2
...
Caused by: java.lang.NoClassDefFoundError: other/package/Class2
...
Caused by: java.lang.ClassNotFoundException: other.package.Class2
关于我的项目配置添加的另一件事是在WEB-INF文件夹下我有一个名为libs的文件夹,里面有一些jars,我创建了另一个名为libs_other_company的lib文件夹,我在那里放置了Class2所在的jar.如果我去java构建路径我可以在库选项卡中看到添加的jar.
我直接从Eclipse运行Tomcat服务器中的应用程序(我没有使用像Ant或Maven这样的东西).
怎么可能在编译时找到类而不是在运行时?有什么想法让它有效吗?
谢谢.
解决方法:
您混淆了两个不同的东西,编译时间类路径解析和运行时类路径访问.
>编译应用程序时,需要在开发环境的编译类路径中包含应用程序使用/引用的类;如果你不这样做,那么就会发生编译时错误.
>运行已编译的应用程序时,需要在JVM类路径中包含应用程序使用/引用的所有类,或者将其包含在应用程序包中;如果你不这样做,那么就会发生运行时错误.
你经历了第二次.
内容总结
以上是互联网集市为您收集整理的java – 运行时的ClassNotFoundException但应用程序编译全部内容,希望文章能够帮你解决java – 运行时的ClassNotFoundException但应用程序编译所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。