(Write once, run anywhere)” 的目标。Java类文件中包含的字节代码可以被不同平台上的JVM所使用。Java字节代码不仅可以以文件形式存在于磁盘上,也可以通过网络方式来下载,还可以只存在于内存中。JVM中的类加载器会负责从包含字节代码的字节数组(byte[])中定义出Java类。在某些情况下,可能会需要动态的生成 Java字节代码,或是对已有的Java字节代码进行修改。这个时候就需要用到本文中将要介绍的相关技术。首先介绍一下如何动态编译Java源文件。
动态编译Java源文件
在一般情况下,开发人员都是在程序运行之前就编写完成了全部的Java源代码并且成功编译。对有些应用来说,Java源代码的内容在运行时刻才能确定。这个时候就需要动态编译源代码来生成Java字节代码,再由JVM来加载执行。典型的场景是很多算法竞赛的在线评测系统(如PKU JudgeOnline),允许用户上传Java代码,由系统在后台编译、运行并进行判定。在动态编译Java源文件时,使用的做法是直接在程序中调用Java编译器。
JSR 199引入了Java编译器API。如果使用JDK 6的话,可以通过此API来动态编译Java代码。比如下面的代码用来动态编译最简单的Hello World类。该Java类的代码是保存在一个字符串中的。
publicclassCompilerTest{
publicstaticvoidmain(String[]args)throwsException{
Stringsource="publicclassMain{publicstaticvoidmain(String[]args){System.out.println(\"HelloWorld!\");}}";
JavaCompilercompiler=ToolProvider.getSystemJavaCompiler();
=compiler.getStandardFileManager(null,null,null);
=newCompilerTest.StringSourceJavaObject("Main",source);
Iterable<extendsJavaFileObject>fileObjects=Arrays.asList(sourceObject);
CompilationTasktask=compiler.getTask(null,fileManager,null,null,null,fileObjects);
booleanresult=task.call();
if(result){
⑵ 在使用jdk编译时,如何如何将一个JAVA源文件编译到一个指定的文件夹里面
class文件编译后会存放在d盘根目录下
javac -d "d:" D.java
执行临时设置classpath路径下的class
java -classpath "d:" D
⑶ 编译java程序需要使用什么命令
编译命令是 javac
首先使用记事本编辑一段简单的Java代码
⑷ 如何使用javac命令编译java源程序
1.建文本文档,输入自己的java程序。