问题标签 [javacompiler]

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.

0 投票
1 回答
5894 浏览

maven - UnsupportedClassVersionError Unsupported major.minor 52.0 版(无法加载类)

部署在我的机器上时,相同的战争文件可以正常工作。但是,在远程服务器上的 ubuntu 14. 和 jdk 1.8 上,当我使用 maven 将其部署到 tomcat 时,我不断收到异常。我检查了远程服务器上列出的 jdk:

这是远程服务器上的 java 版本:

我正在使用 maven 将 web 应用程序部署到远程服务器,pom 文件配置如下:

在 tomcat 上部署 war 文件的快照是:

0 投票
3 回答
3419 浏览

java - 用于远程 JAR 的 Java 注释处理器

一般问题

我有两个项目A和B;B 依赖于 A。我想根据 A 中对象的注释,在 B 中使用注释处理器生成一些代码。当我使用正确的处理器实现运行编译时,只会拾取来自 B 的注释对象。

我知道默认情况下必须禁用扫描其他 JAR,因为您通常不想对所有依赖项进行注释扫描。我也明白,由于编译器的魔力,我可能无法做我想做的事——我对此不太了解——但我希望不是这样。

具体案例

我的项目称为 DB 和 WEB。WEB 显然依赖于 DB 的 JPA 访问;这是在 Maven 中配置的。由于许多架构选择,DB 必须保持一个单独的 JAR。DB 不使用 Spring,除了一些被 WEB 消费的注解;WEB 使用 Spring MVC。

我正在尝试CrudRepository使用注释处理器为我的所有 JPA 实体生成接口。这些@Repository对象应该repo放在 WEB 项目的一个包中,所以它们可以@Autowired在我的 WEB 应用程序中的任何地方使用。我正在执行扫描的注释是@javax.persistence.Entity,但我也尝试了自定义注释,结果相同。

理想情况下,我希望有人能告诉我一个简单的注释

但是,当然,我不指望它,因为它可能会记录在某个地方。作为一种解决方法,我可以将 Spring 依赖项添加到 db 并在那里生成类,但它们仅在 Spring MVC 应用程序中起作用。我也对完成这项工作可能需要的配置持谨慎态度。

更新

一些额外的信息:我正在使用 maven-processor-plugin,我已经验证它在 WEB 项目中对于在那里定义的类运行良好。但是,我特别想要在依赖项目数据库中注释的访问类。我已经研究了该方法AbstractProcessor::getSupportedOptions,但我不清楚我可以在那里做什么。

Maven配置:

建议

我的另一个随机想法是JavaCompiler在 WEB 中为 DB 项目运行一个进程,但我将如何注入我的Processor

0 投票
0 回答
131 浏览

javacompiler - java.lang.NullPointerException 当我使用 JavaCompiler 编译另一个类时

我正在尝试使用 JavaCompiler 类编译一个简单的 java 类,但我看到以下错误: com.coderbd.compile.JDK6FirstCompile.main(JDK6FirstCompile.java:12) 的线程“main”java.lang.NullPointerException 中的异常

我正在使用 JDK 1.8.31,请帮我解决这个问题。编码器在这里:

任何帮助将不胜感激。

0 投票
1 回答
42 浏览

vim - Java 编译器命令概念让我无法掌握

好的,所以我遇到的问题是,每当我在 cmd 提示符中键入 javac 时,它都不会编译我指定的文件。我有几个问题可以帮助我理解它的实际作用。

- 你能编译jar文件吗?如果是这样,它会做什么。

- 如果您在文本编辑器(例如 vim)中键入基本的 hello world 程序,您将它保存为什么?你好世界 。类,你好 world.java,你好 world.txt?

- 如果你有一个格式正确的文本文件、类文件或 Java 文件,你如何正确编译它?

- 你必须在你的程序中指定一个类或文件吗?(公共类示例{})

-vim 与 cmd 提示符有何不同?

一些帮助将不胜感激。

0 投票
0 回答
28 浏览

java - 使用 java 代码创建的插件不起作用

我的紧张是在运行时使用java代码创建一个插件。首先使用创建的可执行jarjava.util.jar.JarOutputStream和用于javax.tools.JavaCompiler编译类。而且我能够从命令行正确执行 jar。

然后我尝试通过在 jar 包中包含 plugin.xml 文件来创建一个插件,并使用上述包编译类,并且插件创建时没有任何错误。

但是我使用了插件的扩展点,当我将插件放入 eclipse 产品中时它没有检测到。

然后我使用 eclispe 导出选项导出它,它对我来说正常工作。我解压缩了以编程方式和使用 eclispe 创建的 jar,内容相同。

我该如何解决这个问题?

0 投票
1 回答
2165 浏览

java - 如何使用 JavaCompiler 获取编译错误消息

这是我用来编译 java 类的代码:

问题是我想收到有关出现的错误的更多信息(超过 Success: false)。有人能帮我吗?

0 投票
2 回答
2186 浏览

java - Java编译器的内部架构

我已经工作Java了 8 年多。

上周,在我公司的一次小型会议上,我的一位同事问我具体是如何Java Compiler工作的?我没有答案。

我试着解释一下,就像 Java 编译器一个接一个地获取语句并将它们转换为不针对任何对象的字节码,OS而是针对JVM.

即使是我,也没有人对这个答案感到满意。

现在的主要问题是 java 编译器究竟是如何工作的。即在编译文件的情况下,编译器将完成多少个步骤或阶段或阶段Java

究竟是什么Java's compiler架构?

如果Java classes同一个 .java 文件中有多个怎么办。那么将编译多少个类。

如果导入指向未编译的 Java 类怎么办?那么未编译的类是编译还是忽略呢?

我用谷歌搜索了半天多,所有人都提供了与我给同事的答案相同的答案。

但最后我在这里找到了一些有用的教程。

但是本教程也涵盖的内容不太深入,我无法想象该教程。

我仍然不满意,并渴望从您那里了解更多有关这方面的信息。

所以如果有人比我和上面的博客更了解一些东西,我可以通过使用它来可视化它的内部架构,Java Compiler请解释一下。

0 投票
1 回答
5773 浏览

java - 无法为根项目的参数找到方法 sourceCompatibility()

我想为使用 Gradle 构建的Java 库定义目标兼容性。因此,我添加了 Java 插件文档中的以下块。

当我组装项目时,会发生以下错误

在根项目上找不到参数 [1.7] 的方法 sourceCompatibility()


有关的

0 投票
1 回答
222 浏览

java - 如何正确地将已编译的类文件添加到具有包结构的 jar 中

我有一个生成源代码的程序,并希望在 java 运行时执行期间编译此源代码,例如:

我使用来自 ToolProvider 的 JavaCompiler:

现在重要的一行是我在选项列表中添加 -d 类目录的位置。

我有这个 genClassDir /gen/classes 我所有的 .class 文件都在里面,包括子目录。

现在我的 jar 文件中的问题是,类文件在包结构之前有 genClassDir 作为前缀。

代替

或没有前导斜杠。

我正在像如何使用 JarOutputStream 创建 JAR 文件的第一个答案一样打包 jar?

有没有办法只获取 jar 中类文件的包结构?

0 投票
1 回答
441 浏览

java - 在运行时编译 java 文件适用于 eclipse,但不适用于导出的可运行 jar 文件

我试图在运行时从代码编译一个 .java 文件,并且在 Eclipse 上一切正常。但是当我尝试导出项目,制作一个可运行的 jar 文件,然后执行 jar 时……好吧,什么也没有发生。为什么它不能从可运行的 jar 文件中工作?

这是我在执行 jar 后在 java 控制台上看到的内容:

这里是我用来编译源文件的 java 代码: