java-compiler-api相关内容
MyClass.java: 包测试;公共类 MyClass {公共无效我的方法(){System.out.println("调用了我的方法");}} 编译 MyClass.java 文件的 SimpleCompileTest.java 的列表. SimpleCompileTest.java: 包测试;导入 javax.tools.*;公共类 SimpleCompileTest {公共静
..
我正在使用 javax.tools 包 (JDK 1.7) 中的 JavaCompiler 来即时编译一些东西,如下所示: compiler.run(null, null, "-cp", 路径, "path/to/my/file.java"); 它可以工作,但我想在内存中完成所有操作(例如,传递带有代码的字符串,而不是源文件,并取回字节码而不是 .class 文件).我发现扩展 InputSt
..
我有一个变量/标识符的名称,比如 x,以及 JCCompilationUnit 和 Scope.有没有办法找到x的类型? 解决方案 public Symbol getSymbol(CompilationUnitTree cut, JCStatement stmt, List typeParams, Name varName, List args) {java.util.ListtypeS
..
我正在尝试习惯 JavaCompiler 并尝试使用它编译程序,我可以成功编译包含单个文件的程序,但是当我尝试编译包含多个文件的项目时.我在编译实现其他类的文件以及该类使用已实现类中的方法时出错. 这是我用来编译java代码的代码 private final String directoryForBin = "C:/TempBINfolder/bin";公共列表 doCompilation
..
Maven 编译器插件文档状态: Compiler Plugin 用于编译项目的源代码.从 3.0 开始,默认编译器是 javax.tools.JavaCompiler(如果您使用的是 java 1.6)并且用于编译 Java 源代码.如果要强制使用javac插件,必须配置插件选项forceJavacCompilerUse 实际上,当我们的构建中未指定 forceJavacCompil
..
我的用例是使用 JDK 6 中提供的 ToolProvider 和 JavaCompiler 类从 Java 程序编译生成的源文件.源文件包含对上下文类加载器(它在 J2EE 容器中运行)中的类的引用,但不在系统类加载器.我的理解是默认情况下 ToolProvider 将使用系统类加载器创建 JavaCompiler 实例. 有没有办法指定 JavaCompiler 使用的类加载器?
..
我正在使用 javax.tools 包 (JDK 1.7) 中的 JavaCompiler 来即时编译一些东西,如下所示: compiler.run(null, null, "-cp", 路径, "path/to/my/file.java"); 它可以工作,但我想在内存中完成所有操作(例如,传递带有代码的字符串,而不是源文件,并取回字节码而不是 .class 文件).我发现扩展 InputSt
..
当我在 android studio 中清理 android 项目时,错误发生了,我已经回到以前的提交或不同的分支,这几天前找到了,但现在有这个错误.我已经检查了这个问题,并且没有为我的项目添加大图像或字符串.Kothlin 中的 STRING_TOO_LARGE 字符串 解决方案 暂时可以降级 Gradle 版本来解决这个问题.使用 gradle 3.1 版本,如以下 3.1.3.
..
如果我创建一个自定义注释(例如:@SaveFuncName("saveMe") 将添加一个名为 saveMe() 的方法以及我的处理器生成的一些代码),可以javac 编译器使用我的注释处理器向类添加方法?或者我只能创建一个不同的类? 解决方案 或者我只能创建一个不同的类? 没错.现有的 API 不允许我们修改现有的类,只能生成新的类. 从技术上讲,如果你想做一些hacky
..
在 spring-boot 应用程序中,我在运行时执行以下操作: 生成java类 编译 使用反射访问已编译类的一些静态字段. 我的代码基于 这篇文章 并且在运行时编译我生成的类时遇到问题.在 IDE 编译中运行时可以正常工作,但是当从 spring-boot jar 编译运行时失败,说缺少符号或某些包不存在.我正在编译的类依赖于位于 \BOOT-INF\lib\ 下的 jar 中的
..
是否可以在运行时用Java编写新的类? 这意味着什么?便餐?编译器API? 我能做 包装测试;公共类TryReflection02 {接口A {}公共静态void main(String [] args){对象o = new A(){};System.out.println(o.toString());o = A.class.newInstance()//异常}} 我可以做具有
..
我正在一个项目中,部署在JBoss服务器上的企业归档文件(ear)需要动态编译(并运行)一个类.我正在使用JavaCompiler类来执行此操作-复杂性来自以下事实:正在编译的类引用了耳内ejb jar中包含的某些类. 当部署的耳朵在部署时“爆炸"时,这不是问题,因此它只是目录而不是存档-在这种情况下,我可以在编译器的-classpath选项中指定所需的jar,和编译工作正常.不幸的是,由于
..
我从另一个Stack Overflow线程获得了Java代码 import java.io.*; import javax.tools.JavaCompiler; import javax.tools.ToolProvider; public class Main { public static void main(String[] args) throws IOException{
..
这个想法是比较两个jar,看看它们是否是从相同的源生成的,并在二进制/字节代码级别比较它们是否相同.同样,如果它们都使用相同的编译器(即Eclipse JDT或JIT等编译器)进行编译. 我看过Apache Common BCEL,但是它仅在将原始字节码分解为源代码之后才进行比较,然后像diff工具一样进行比较.逐行比较文本,但是我想要的是比较字节码,而不将其分解/重新排列为源代码,然后进行
..
我有一个变量/标识符的名称,例如x,以及JCCompilationUnit和解决方案 public Symbol getSymbol(CompilationUnitTree cut, JCStatement stmt, List typeParams, Name varName, List args) { java.util.Li
..
我试图适应JavaCompiler并尝试使用它来编译程序,我可以成功地编译包含单个文件的程序,但是当我尝试编译具有多个文件的项目时.在编译实现其他类的文件以及该类使用已实现的类中的方法的任何地方时,都会出现错误. 这是我用来编译Java代码的代码 private final String directoryForBin = "C:/TempBINfolder/bin"; publi
..
我想使用JavaCompiler动态创建一些类. 我找到了javax.tools包的源代码,但是没有实现;互联网上的一些帖子说这取决于tools.jar,我不确定tools.jar是否与JRE相关. 那么,我可以在未安装JDK的JRE环境中运行该程序吗? 另一个问题,JavaCompiler的实现细节是什么,是否正在创建一个新的过程来调用javac命令? 谢谢 解决方
..
我想将String视为Java文件,然后编译并运行它.换句话说,使用Java作为脚本语言. 为了获得更好的性能,我们应该避免将.class文件写入磁盘. 解决方案 此答案来自我的一个博客这是三个源代码文件. MemoryJavaCompiler.java package me.soulmachine.compiler; import java.io.IOExceptio
..
我正在用Java构建一个可以接收Java源文件的服务器,它应该使用JavaCompiler动态地对其进行编译,然后加载该类.但是,问题在于,如果服务器接收到具有相同名称但内容不同的文件,它将仍然加载先前的类并提供相同的输出.我已经注意到一些答案,建议为要尝试加载的类创建一个超类并使用其他classLoader,但是如果将Java源文件动态发送到服务器,情况仍然如此吗? 这是我在FileSer
..
嗨,我需要创建,编译和加载Java类运行时.我正在使用FTL创建Java源文件,并且如果没有动态依赖项,则能够编译源代码. 要详细说明一个实例,我有两个java源文件,一个接口及其实现类.我可以使用java编译器api来编译接口, String classpath=System.getProperty("java.class.path"); String testpat
..