【问题标题】:Java URLClassLoader works in eclipse but not in cmdJava URLClassLoader 在 Eclipse 中有效,但在 cmd 中无效
【发布时间】:2020-10-23 22:08:25
【问题描述】:

我有一个程序尝试使用 URLClassLoader 从文件夹加载 java 类。类加载器能够在 eclipse 中运行时加载类,但是当我尝试在 cmd 中运行它时,它会抛出 ClassNotFoundException。

文件结构:

-rootFolder/
  -src/
  -tests/
    -test1/
      -A.java

程序有两个参数:args[0] 根文件夹的绝对路径和 args[1] 要读取的测试文件夹的名称。

String rootString = args[0]+ File.separator + "tests" + File.separator + args[1] + File.separator;
File folder = new File(rootString);
String[] files = folder.list();

我能够在 eclipse 和 cmd 中使用此路径获取文件名。 然后我有我的 URLClassLoader。

URL[] urls = new URL[] {new File(rootString).toURI().toURL()};
URLClassLoader cl = new URLClassLoader(urls);
cl.loadClass("A"); // A is the name found in files, in default package

这部分在eclipse中运行但是在cmd中抛出ClassNotFound Exception。 在cmd中的脚本是:

java -cp build/libs/project.jar project.Main rootFolder test1

我的猜测是类路径会导致问题,但我不太确定为什么 URLClassLoader 需要使用类路径而不是文件 url。

【问题讨论】:

    标签: java eclipse cmd classloader urlclassloader


    【解决方案1】:

    所以我发现 Eclipse 会自动编译默认类路径文件夹下的所有 java 类。反射仅适用于编译后创建的 .class 文件,这就是引发 ClassNotFound 异常的原因。

    【讨论】:

      猜你喜欢
      • 2014-03-23
      • 2012-02-13
      • 2020-06-15
      • 2021-02-26
      • 1970-01-01
      • 2019-01-19
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多