Java Eclipse中AspectJ项目中JUnit测试的ClassNotFoundException

Java Eclipse中AspectJ项目中JUnit测试的ClassNotFoundException,java,eclipse,junit,aspectj,classnotfoundexception,Java,Eclipse,Junit,Aspectj,Classnotfoundexception,谷歌对此有一些答案,但它们都是为使用Maven的人提供的。我没有使用Maven,所以我被难住了。我还有其他项目没有使用AspectJ插件,它们的JUnit测试在Eclipse中运行良好。我不明白为什么Eclipse找不到这个类。我右键单击类本身,然后告诉它作为JUnit测试运行。它适用于我的非AspectJ项目中的JUnit测试。有人能帮忙吗 Class not found BasicSpectrogramPeriodogramTests java.lang.ClassNotFoundExcep

谷歌对此有一些答案,但它们都是为使用Maven的人提供的。我没有使用Maven,所以我被难住了。我还有其他项目没有使用AspectJ插件,它们的JUnit测试在Eclipse中运行良好。我不明白为什么Eclipse找不到这个类。我右键单击类本身,然后告诉它作为JUnit测试运行。它适用于我的非AspectJ项目中的JUnit测试。有人能帮忙吗

Class not found BasicSpectrogramPeriodogramTests
java.lang.ClassNotFoundException: BasicSpectrogramPeriodogramTests
    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:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

AspectJ插件可能会影响构建类路径,但不会影响运行时类路径。为类创建启动器条目,然后显式设置类路径以包含jar

使用Eclipse的“load type”函数查看从何处加载类

Ctrl-Space-T弹出一个对话框。输入目标类名“BasicSpectrogramPeriodogramTests” 。它应在工作区中显示包名和位置,对于所有列出的类,应显示在类名的右侧,对于选定的类,应显示在对话框底部附近。这将包括jar及其路径(如果Eclipse是这样加载的)


确保类的路径是运行时配置类路径中的路径。将它显式地添加到类路径的顶部,即使它是dup。

以前我遇到过类似的问题,问题是由于外部库(例如Selenium服务器)的构建路径中断。因此,首先请打开构建路径(右键单击project->Build path->Configure Build path),并验证所有外部库都可以成功加载(存在类似“cannot load”的消息)。很可能是在优化或添加外部工具(如Ant)时重命名/移动了库。希望这有帮助


WBR,Andrey

您能提供堆栈跟踪,以便人们更好地诊断问题所在吗?ClassNotFoundException?Eclipse会给你什么样的错误?我不确定你所说的创建一个启动器条目是什么意思。我有一个类的运行配置作为JUnit测试用例。你指的是哪个罐子?我尝试将JUnit-4.5.jar添加到我的类路径中,但它没有改变任何东西。它也被列在默认类路径中。运行配置是启动器的意思。jar意味着无论哪个jar包含异常中提到的类,在本例中为“BasicSpectrogramPeriodogramTests”。我对AspectJ或JUnit-4.5不太熟悉,因此我不知道哪个特定的jar包含该类。包含该类的项目位于类路径中。我没有包含类的jar。@Bluebomber-哪个类路径、构建类路径或运行配置类路径。是否已验证.class文件是否存在于项目输出文件夹中?有时它会被清理或不同步。您是否使用项目引用来包含该类?尝试显式填充运行时类路径,不要依赖默认值。生成类路径是通过右键单击项目->属性->Java生成路径设置的类路径吗?我使用了这个构建路径,并用我的JUnit.class文件添加了源文件夹,现在它可以工作了。我仍然不明白为什么我从其他人那里继承的其他Java项目会运行JUnit测试,并且似乎没有执行相同的步骤。