Tag: 编译

使用JavaCompiler API进行Java代码编译和编译error handling

我有以下Java代码使用javax.tools.JavaCompiler API编译给定的Java代码: JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); ByteArrayOutputStream err = new ByteArrayOutputStream(); compiler.run(new FileInputStream(“Test.java”), new FileOutputStream(“Test.class”), err, “Test.java”); // Test.java contains the code of a simple Java class String compilationErrors = err.toString(); 在上面的代码中,所有编译错误都作为一个String实例返回。 有没有办法得到编译错误解析id获取文件名,行号,错误原因和代码行或我是否必须进行解析?

JDK 1.6的JavaCompiler:如何将类字节直接写入byte 数组?

所以我最近了解了JDK 1.6中提供的新JavaCompiler API 。 这使得直接从运行代码将String编译为.class文件变得非常简单: String className = “Foo”; String sourceCode = “…”; JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); List unitsToCompile = new ArrayList() {{ add(new JavaSourceFromString(className, sourceCode)); }}; StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null); compiler.getTask(null, fileManager, null, null, null, unitsToCompile).call(); fileManager.close(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); FileInputStream fis = new FileInputStream(className + “.class”); IOUtils.copyStream(fis, bos); return […]

使用ANT编译JavaFX代码

我在我的系统上安装了以下 – Java version “1.7.0_09” JavaFX 2.0 SDK NetBeans 7.2.1 当我尝试使用ANT编译代码时,它显示错误消息 – Could not load definitions from resource com/sun/javafx/tools/ant/antlib.xml. It could not be found. Build.XML包含 simple example build file 其他编译错误: [javac] C:\Users\JavaUser4\Desktop\XYX2012.12FX\XYZ\src\Utility\net\XYZ\javafx\queue\DefaultStatisticsHandlerController.java:19: error: package javafx.scene does not exist [javac] import javafx.scene.Node; [javac] ^ [javac] C:\Users\JavaUser4\Desktop\XYZ2012.12FX\XYZ\src\Utility\net\XYZ\javafx\queue\DefaultStatisticsHandlerController.java:20: error: package javafx.scene.control does not exist [javac] import javafx.scene.control.Button; [javac] […]

编译为1.5编写的Java代码以使用1.4 JRE?

我有一个项目使用generics和一些Java 1.5 / 6位碎片。 是否可以编译此代码以在运行1.4 JRE的系统上工作? 我使用ANT构建脚本和javac任务来编译库。 这种构建很好,而目标属性是1.5。 如果我将目标更改为1.4,则会出现以下错误: generics are not supported in -source 1.4 (use -source 5 or higher to enable generics) 所以我添加了一个source属性并尝试使用值5和1.5。 新错误: javac: source release 5 requires target release 1.5 我是否必须完成所有代码并更改1.5内容以使其工作?

错误:“只有在明确请求注释处理时才接受类名”

可能重复: Java编译问题:只有在显式请求注释处理时才接受类名 我遇到了一个问题。 我正在使用深红色的编辑器。 有人可以解释这个错误的含义吗? //这是我的节目 package test.rim.bbapps.testcase.lib; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class michaeltictactoe2 implements ActionListener { /* Instance variables */ private JFrame window = new JFrame (” TicTacToe”); private JButton button1 = new JButton (“”) ; private JButton button2 = new JButton (“”) ; private JButton button3 = new JButton (“”) […]

不推荐的编译错误

我正在尝试编译我的Java程序,但是我收到了“不推荐使用的文件”错误。 我通常通过键入“Javac FileName.java”来编译该文件,但是我收到一条错误消息: FileName.java使用或覆盖depreacted API。 有关详细信息,请使用Xlint弃用重新编译。 我在命令行输入什么以使其运行?

如何在动态编译源文件时为JavaCompiler提供接口?

我正在尝试在运行时编译和加载一个类,而不知道该类的包。 我知道该类应该遵守一个接口,以及源的位置(以及类名)。 我正在尝试以下方法: /* Compiling source */ File root = new File(“scripts”); File sourceFile = new File(root, “Test.java”); JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); compiler.run(null, null, null, sourceFile.getPath()); Test.java文件看起来像什么 import foo.Itest; public class Test implements Itest{ … } 而且我得到一个cannot find symbol symbol : class Itest来自编译器的cannot find symbol symbol : class Itest错误。 如何为编译器提供接口 (已经加载)以避免此错误? [编辑 – 已解决]:错误来自于接口是ITest并且源是指Itest接口的Itest 。

是否可以在不提供依赖性的情况下编译java文件?

有一个java文件,它有一些依赖项jar。 但是现在,我没有那些jar子,我必须把它编译成一个.class文件。 是否有可能做到这一点? UPDATE 谢谢你的回答。 起初,我认为我们可以为缺少的依赖项创建一些存根,这很简单但很无聊。 既然我们可以创建存根而不会丢失存根以使编译器满意,为什么我们不能让工具自动完成呢? 该工具不需要创建存根,而是读取java文件,收集信息,然后构建.class文件。 但是如果java文件中的“import”语句包含“*”,那将是一个问题: import aaa.* import bbb.* public class Hello { World world; } 我们不知道“世界”这个类是否在“aaa”或“bbb”包下。 如果我们不熟悉缺少的依赖项,我们甚至不知道如何为“World”类创建存根。 但如果“导入”声明清楚,我认为这是可能的,但也许没有人会写这样的工具

如何为Android库项目指定多个源目录

我使用ant工具构建android库项目,我需要指定多个源目录。 我试图通过在ant.properties文件中添加这些行来指定多个源目录 source.dir=src:src2 source.dir=src;src2 但无法在两种情况下构建,在这两种情况下都会生成.class ,但是在创建jar文件时我遇到了这个错误 BUILD FAILED C:\Program Files\Android\android-sdk\tools\ant\build.xml:681: The following error occurred while executing this line: C:\Program Files\Android\android-sdk\tools\ant\build.xml:749: C:\workarea\Android\Packages\test\src;src2 does not exist. 任何人都可以告诉我如何在ant.properties中指定多个源目录来构建Android库项目 ?

生成’Hello,World!’ 使用Java ASM库的类

我已经开始乱用我正在研究的编译器项目的ASM API。 但是,我发现文档对于很多地方的新手来说还不太清楚,我认为有一个很好的例子来生成一个只打印“Hello,World!”的类。 这将是一个很好的例子。 目前,我可以使用main()(使用ClassWriter,ClassVisitor和MethodVisitor类)生成一个类,但我似乎无法弄清楚如何生成main的主体。 任何人都可以给我一个在ASM中生成类文件的示例: 包含一个main() 在main()中创建一个本地String变量,其值为“Hello,World!” 打印变量