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 文件以及 运行 它的步骤。
我想从位于磁盘上的 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 文件以及 运行 它的步骤。