java - 获取运行时创建的类

标签 java file class classpath

我正在尝试从磁盘上的某个位置复制包含类(包“test”中的 MyTestClass)的 .java 文件。我想获取该文件包含的类。也许我的代码会有用。这是我的代码:

File generatedFile = new File( DIR_CONTAINING_FILE + "/" + className + ".java" );
FileUtils.copyFileToDirectory( generatedFile, COPY_FILE_DIR );
Class cl = Class.forName( "test.MyTestClass" );

复制文件工作正常。它显示了它必须在哪里。

当我手动将文件复制到 COPY_FILE_DIR 然后启动程序时,它会工作,它会找到我的类。但是,当我在没有先复制文件的情况下启动程序时(我的意思是当我让它对我的程序执行操作时),我得到了 ClassNotFoundException。当我刷新目录时,就会出现我的文件,因此它已被完美复制。

此时我可以再次启动我的程序并且......神奇!它会找到我的类(class)!看起来我需要从 java 刷新目录或做其他事情..我不知道该怎么做。任何帮助将不胜感激。

最佳答案

看来你必须熟悉 JavaCompiler API 来做到这一点。在哪里存储 .java 文件并不重要 - 它们必须先编译为字节码,然后才能尝试在运行时内使用它们。

关于java - 获取运行时创建的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19249804/

相关文章:

swift - 类型 'Battle' 不符合协议(protocol) 'GKMatchmakerViewControllerDelegate'

Java DecimalFormat 科学记数法问题

python - 检测 python 中的文件句柄泄漏?

c++ - 快速查找文件中的位置

class - 如何设计一个版本转换器(Json.net),在没有太多代码污点的情况下将非常旧的版本处理为新版本

php - 在 php 中制作 mysql 单例数据库类的任何更简单/更好的方法?

java - 通过在组合框/选择 Java 中输入值来显示可能性列表

java - Graphite/Carbon 如何获取每秒指标

java - 如何将javascript变量传递给struts2属性标签

string - 如何在Arduino上将数据写入文本文件