JAVA - 从位于磁盘上的 file.java 获取 class

JAVA - get class from file.java located on disk

我想从位于磁盘上的 file.java 加载 class 定义或字段。 我试过 URLClassLoader:

        URL url = file.toURL();
        URL[] urls = new URL[]{url};
        ClassLoader cl = new URLClassLoader(urls);
        Class c = new Object().getClass();
        try {
            c = cl.loadClass(className);
        } catch (ClassNotFoundException e1) {
              System.err.println("not found class: " + className);
        }

但是没用;(

您可以通过 loadClass 加载 classes,但不能加载源代码文件。 .java 个文件包含 个源代码 。对于 Java,与许多(但不是所有)其他语言一样,您必须 "compile" 将源代码转换为机器可读的形式——在 Java 的情况下,.class 文件(然后可能会或可能不会捆绑到 .jar 中)。您使用 javac 工具(或 IDE 的功能)编译 Java 代码。

例如,如果您在名为 Foo.java 的文件中定义了一个名为 Foo 的 class,则:

javac Foo.java

...将创建 Foo.class,然后可以加载它。

您可能会发现 this "Getting Started": The "Hello World" application tutorial from Oracle 有用。它经历了在您的计算机上设置工具、编写源文件、将其编译成 class 文件以及 运行 它的步骤。