问题标签 [java-compiler-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何将 JDK6 ToolProvider 和 JavaCompiler 与上下文类加载器一起使用?
我的用例是使用 JDK 6 中提供的 ToolProvider 和 JavaCompiler 类从 java 程序编译生成的源文件。源文件包含对上下文类加载器中类的引用(它在 J2EE 容器中运行),但不在系统类加载器中。我的理解是,默认情况下 ToolProvider 将使用系统类加载器创建 JavaCompiler 实例。
有没有办法指定一个类加载器供 JavaCompiler 使用?
我尝试了这种方法,根据 IBM DeveloperWorks 上的某些内容进行了修改:
FileManagerImpl 定义为:
堆栈跟踪表明它在注释处理期间仅被调用一次。我验证了要编译的源文件中引用的类不在系统类路径上,但可以从上下文类加载器中获得。
java - 使用 javax.tools.JavaCompiler 编译源时如何设置类路径?
我使用类javax.tools.JavaCompiler
(jdk6)编译源文件,但源文件依赖于一些jar文件。如何设置类路径javax.tools.JavaCompiler
?
java - 使用 JSR 199 Compiler API 在目录树中编译一组 Java 文件
我正在尝试使用 Compiler API 编译许多文件。
假设我有一个目录结构
有什么方法可以发现所有 Java 文件并使其编译所有内容,而无需递归到所有目录并查找所有 *.java 文件?
编辑:我想做的是编译我在某个目录树中得到的所有类。这些类是相互独立的。然后我加载类并实例化这些类的一些对象并调用方法。没有一个类需要有主。
java - javax.tools 是否依赖于 JDK?
我想用来JavaCompiler
动态创建一些类。
找到了包的源码javax.tools
,但是没有实现;互联网上的一些帖子说这取决于tools.jar
,我不确定是否tools.jar
与 JRE 有联系。
那么,我可以在没有安装 JDK 的 JRE 环境中运行程序吗?
另一个问题,它的实现细节JavaCompiler
是什么,它是创建一个新进程来调用javac
命令吗?
谢谢
java - 如何运行JavaCompiler编译的代码?
有没有办法运行JavaCompiler编译的程序?[javax.tools.JavaCompiler]
我的代码:
现在我想以 1 秒的生命周期运行该程序并将输出输出到字符串变量。有什么办法可以做到吗?
java - 使用 JavaCompiler 和 ClassLoader 编译和运行用户代码
我正在编写用于 Java 学习的网络应用程序。使用哪些用户可以在我的服务器上编译他们的代码 + 运行该代码。使用 JavaCompiler 很容易编译:
我设法用代码加载类:
我怎样才能保护我的应用程序免受无限循环和邪恶的学生;)
- 有没有办法终身运行该代码?
- 内存泄漏是否有任何风险,我能做些什么来解决这个问题。
- 这是一个很好的解决方案,还是你能提出更好的建议?
谢谢。齐姆
java - 以编程方式编译存储在任意子文件夹中的包中的 Java 类
我正在寻找用 Java 编译一个应用程序,它由一定数量的包中的不同数量的 java 类组成。在命令行中,我可以切换到包含根包的文件夹并键入:
或者
编译我的根包的所有主要子包中的所有 java 类。
但是,我希望能够在 Java 应用程序中执行此操作。(我们的想法是,我们向学生提供一个包含单元测试的应用程序。单元测试需要针对他们的代码运行,然后应用程序创建一个 JAR 文件,其中包含他们的源文件,这些文件已被测试结果“加水印”。所有这工作正常,但我们想确保测试的类文件是从提交的源文件创建的,因此以编程方式编译 java 源的想法)。
问题在于每个学生都将他们的根包存储在任意位置,我似乎无法将文件的位置传递给 JavaCompiler (javax.tools)。
是否有可能,如果是这样,有人可以就如何正确编译任意放置的根包提供一些提示。
干杯
理查德
更多信息:
学生有一个文件夹结构:
其中包含根包。他们启动应用程序(可能存储在此文件夹中 - 因此没有问题 - 但很可能存储在其他地方),要求他们提供包含根包的文件夹。进入后,学生点击创建 JAR 按钮,编译包中的文件,对新编译的文件运行测试,然后创建 JAR。
在思考这个问题的同时,解决方案可能是告诉学生将我们的“create JAR”应用程序安装在包含他们的根包的文件夹中。
java - 使用 Java 编译器 API 时出现空指针异常
MyClass.java:
编译 MyClass.java 文件的 SimpleCompileTest.java 的清单。
简单编译测试.java:
我正在执行 SimpleCompileTest 类并获得 NullPointerException。ToolProvider.getSystemJavaCompiler() 返回 null。有人可以告诉我代码有什么问题吗
java - 使用 Javassist 编译的类的类路径
正如标题所暗示的,用 Javassist 编译的类的类路径是什么?
我的场景是:A 类是用 Javassist 编译的。B类使用Java Compiler API编译并引用A类。问题是A类对B类不可见......
有任何想法吗?
java - Java默认编译目录
我正在使用 Java Compiler API 在运行时构建几个类。但是,我希望将这些类编译到默认编译目录中,生成其他类文件。
有一个简单的方法吗?如果我检查类路径,我可以看到第一个 URI 实际上是我想要的目录,但它总是第一个吗?