有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

netbeans如何获取java。朗;从类加载器初始化,而不是编译文件*。JAVA

我正在尝试获取java。朗;从尚未编译的文件(*.java)中初始化对象。我开发了一个netbeans plaform插件,我知道如何为源文件夹(src)找到specify classLoader,之后我想为specify file获取类对象。我可以调用loadClass来获取它,但这不适用于未编译的文件。例如:

        ClassPath classPath = ClassPath.getClassPath(someFileObject, ClassPath.SOURCE);
        ClassLoader loader = classPath.getClassLoader(true);
        Class myLookingForClass = loader.loadClass("web.users.User"); 
        // it is file User.java in package web.users

有什么办法吗

更新:

好的,我正在尝试实现一种机制,该机制将生成带有主体(方法、变量等)的动态类。为此,我需要类定义,例如:返回类型的方法或一些变量类型

示例场景:

用户在IDE(Netbeans)上工作,他创建了一个some类(但未编译)。该类将在某个类的主体中使用,我们将在某个事件后动态创建该类(例如,在使用某个按钮时)。现在获取类加载器并将类定义加载为java是没有问题的。lang.类和他们使用。但文件需要已经编译好。现在我想知道这是否是获得java的某种方式。例如“someFile.java”和“package somePackage”


共 (1) 个答案

  1. # 1 楼答案

    对于尚未编译的类,无法使用Class对象

    您必须理解java.lang.Class实际上是一个反映的API,它代表由JVM加载的类,而不仅仅是一般java类的抽象ClassLoader本身也只适用于类文件结构。java文件与运行的java无关:虽然没有编译,但它们只是一个文本文件

    另一方面,您可以使用java编译器API以编程方式编译java文件,然后访问已编译的类。请参阅javax.tools了解如何使用此API。也许这个SO question也会有帮助