获取在运行时创建的类

时间:2013-10-08 14:00:01

标签: java file class classpath

我正在尝试从磁盘上的某个位置复制包含类(MyTestClass在“test”包中)的.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。当我刷新目录时,我的文件就完全被复制了。

在这一刻,我可以再次启动我的程序......魔术!它会找到我的班级!看起来我需要从java刷新目录或做其他事情..我不知道该怎么做。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您似乎必须熟悉JavaCompiler API才能执行此操作。存储.java文件的位置并不重要 - 在尝试在运行时使用它们之前,必须将它们编译为字节码。