当前位置: 首页 > 知识库问答 >
问题:

class.forName异常

庄智
2023-03-14

./tested/resta.java
。/tested/suma.class
。/tested/resta.class
。/test/testsuma.class
。/test/testsuma.java
。/test/testsuma.class
。/test/testsuma.class
。/spumevaluador.class
。/spumevaluador.java

当我运行Spumevaluador(java-cp/home/minyatur/.netbeans/7.2/modules/ext/junit-4.10.jar:.Spumevaluador)时,我得到以下错误:

minyatur@orome:~/codigo$./ejecuta.sh线程“main”中有异常java.lang.noClassDeffounderRor:test/TestSuma(错误名称:TestSuma)在java.lang.classloader.defineclass1(本机方法)在java.lang.classloader.defineclass(classloader.java:787)在java.security.secureclassloader.defineclass(secureclassloader.java:142)在)

spumeValuador.java代码:

import org.junit.runner.JUnitCore;
import java.util.Iterator;
import org.junit.internal.TextListener;
import org.junit.runner.Computer;
import org.junit.runner.Request;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
import java.util.ArrayList;

public class Spumevaluador {

    public static void main(String[] args) throws ClassNotFoundException {

    System.out.println("Hola");
        ArrayList clases = new ArrayList();
        clases.add("test.TestSuma");
        clases.add("test.TestResta");        
        Class<?>[] cClases = new Class<?>[clases.size()];
        for (int i = 0; i < clases.size(); i++) {
            cClases[i] = Class.forName(clases.get(i).toString());
        }
        Request req = Request.classes(cClases);
        JUnitCore jUnitCore = new JUnitCore();
        jUnitCore.addListener(new TextListener(System.out));
        jUnitCore.run(req);
    }
}

如果更改class.forName(“testsuma”),对class.forName的调用似乎找不到test.testsuma;并在类路径中包含../test,它工作得很好。

为什么?有什么想法吗?

共有1个答案

茹正初
2023-03-14

听起来您的TestSuma类是在默认包中定义的,而不是在测试包中定义的。尝试添加:

package test;

到testsuma.java文件的顶部。

Java类路径包含Java可以找到包层次结构根的位置。如果您在测试包中有一个类,则需要在类路径中放置包含“test”子目录的目录,而不是测试子目录本身。

 类似资料:
  • 问题内容: 我在Netbeans 7.2上遇到此错误,它说ClassNotFoundexception和InstantationException。我真的在这个问题上陷入困境。请帮助我。 问题答案: 那么这个简单的方法呢? 我也想知道为什么您要用这种方式连接数据库?最好让服务器对其进行管理。 首先像这样配置(如果您使用的是tomcat): 然后,简单地从servlet / etc中的该资源获取连接

  • 问题内容: 这个问题已经在这里有了答案 : 如何在Eclipse Web项目中安装JDBC驱动程序而不面对java.lang.ClassNotFoundexception (13个答案) 3年前关闭。 我正在开发一个Web应用程序,使用:Eclipse IDE(Marse),Java 8,Apache tomcat 8,MySQL。我的用户注册代码如下: 我的代码也是正确的,并且我在Eclipse

  • 问题内容: 我想使用其名称创建指定类的实例。我的代码如下所示。 我收到编译器警告。我这样做正确吗?甚至有可能使用类的名称并获得该类型的实例,因为我不认为编译器有任何方式可以知道类型是什么? 谢谢 问题答案: 我认为第一种方法应如下所示: 没有那些讨厌的类型安全警告,您不能使用类型参数…进行向上的类型转换。 顺便说一句,如果您忽略了这些警告,则create方法可能会创建某个类的实例,该类与调用方使用

  • 问题内容: Java程序中的“思考”如下: 我期望输出如下: 但是得到 显然,try块抛出ClassNotFoundException,这是意外的。有什么想法为什么代码会抛出此错误而不是像预期的那样初始化Gum类? 问题答案: 你的类在包,所以他们完全合格的名称,和。仅接受标准名称: 参数: -所需类的完全限定名称。 将您的代码更改为:

  • 问题内容: 问题答案: 完全不与JDBC直接相关。它只是加载一个类。 大多数JDBC驱动程序类通过调用在自己的静态初始化器中注册自己registerDriver()。 是真正不需要调用的真正调用(除非你编写自己的JDBC驱动程序)。 请注意,在JDBC 4 中,如果你的JDBC驱动程序是最新的,则不需要它们中的任何一个,因为可以使用服务定位机制找到驱动程序(即,只需忽略该调用并照常打开连接)。有关

  • 问题内容: 我上课简单。然后,我尝试编译并运行它,看到ClassNotFoundException。 我正在使用Windows cmd: 我做错了什么?因此,这是postgrsql库 https://www.dropbox.com/s/idx5l0kub5rn1b8/postgresql.jar?dl=0 问题答案: 在命令行上, 应该 而且,因为它包含,所以当您使用它时,可以将其删除 根据Jav