问题标签 [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 回答
1476 浏览

java - 如何在 IntelliJ IDEA 中运行 AnnotationProcessor?

我在 IntelliJ IDEA 中创建了简单的注释处理器,添加了注释配置文件,但我不明白如何运行它。我知道注释处理器在编译时工作,但我没有在输出中看到来自注释处理器信使的任何消息。

}

0 投票
4 回答
1397 浏览

java - java - 在没有 JDK 的情况下在客户端编译代码

我有一个我很困惑的问题。

我知道J ava R untime E nviroment 和J ava D evelopement K it 之间的区别。

我正在编写一个程序,该程序使用该ToolProvider.getSystemJavaCompiler()方法从代码中编译 java 代码。

现在,我得到答复,如果我的客户端没有安装 JDK,我将无法从客户端编译代码。我的主要问题是,我该怎么做?我不希望我的客户为了运行我的程序而不得不在他们的计算机上安装 JDK。

提前致谢!

0 投票
1 回答
230 浏览

null - ToolProvider.getSystemJavaCompiler() 返回 null

我已经尝试了我喜欢的所有内容,例如包含tools.jar文件classpath

我也试图复制tools.jar到我classpath的二进制文件(如javacjava等)所在的位置,但ToolProvider.getSystemJavaCompiler()仍在返回null

请帮助我使我的代码正常工作。

0 投票
2 回答
876 浏览

java - 如何使 Java 编译器强制显式类型转换

当变量类型不匹配时,有没有办法强制 java 编译器发出错误,而不是隐式转换。例如:

在上面的示例中,java 将 (1/intValue) 隐式转换为值为 0 的整数。

我想要的是编译器在变量类型不匹配而不是隐式转换时发出错误。

提前致谢

Edit1:上面的等式只是一个例子。我确实知道如何使用以下任一解决方案来解决此问题:

或者

但这不是我所追求的。谢谢

Edit2:我指的是类型转换而不是类型转换。我正在寻找编译器来强制执行显式类型转换。

我正在寻找这样的东西:https: //support.microsoft.com/en-us/help/311329/option-explicit-and-option-strict-in-visual-basic-.net-and-in-视觉基础

0 投票
1 回答
117 浏览

java - 使用反射的 Java 运行时编译器无法正常工作

我有一个带有编辑器的 JavaFX 应用程序。在编辑器中,用户将能够编写 java 代码,我有一个按钮来编译这段代码并运行 main 方法。例如,编辑器将包含以下代码:

单击按钮将运行以下代码:

在编译器类中,有如下实现:

现在上面的代码成功地创建了java文件,class文件并且第一次正确运行。现在,当我更改编辑器代码以打印其他内容时,它会输出代码第一次运行的结果。所以,在这种情况下,它仍然会打印 'hello' 而不是它的当前值。

有什么问题可能是错的吗?谢谢!

0 投票
3 回答
1805 浏览

java - 如何打印命令“mvn compile”的类加载模式?

当我们运行 mvn compile 时,编译器会从类路径中的各种 jar 中选择要加载的类。我想为此类加载打印“类:jar”组合列表。

先感谢您。

0 投票
1 回答
535 浏览

java - 为什么 JavaCompiler 在实例化 Java 类时很慢?

我正在使用 JavaCompiler 动态地创建一个 Java 类,对其进行编译并加载到我的应用程序中。

我的问题如下:JavaCompiler 的执行时间比实例化同一类的标准方法慢得多。

这里有一个例子:

在测量了这段代码之后,我创建了一个与 var内容相同的新 java Class来测试性能:它比 JavaCompiler 方式快得多。(我不能使用标准类,因为在我的应用程序中我需要动态创建它)。那么,有没有可能提高这段代码的性能呢?或者这种低性能是正常的?

编辑:我还测试的生成代码是一个简单的 OWLAPI 公理序列:

这正是变量源包含的内容。公理的数量取决于用户的输入。

0 投票
1 回答
2275 浏览

java - 如何编译 .java 与运行时的依赖关系?

我有很多.java文件需要导入另一个.java文件...

像这样的东西:

但我只有package.c.java.

当我尝试使用 Java 编译器或其他我知道的东西进行编译时,我总是遇到这些错误

错误:包 <-package-> 不存在

或类似的东西:

错误:找不到符号

我无法编译A.java,因为无法编译的需要C.class导致需要另一个,有人知道我该怎么办吗?

.java当不需要依赖项时一切正常,在这些情况下 Java 编译器做得很好。

也许GetStarted链接可以解决我的问题,但我找不到这样做的方法。

[编辑] 那是我的编译器代码:

我在其中给出一个路径并在其中找到所有 .java 文件,将它们添加到列表中并尝试同时编译所有文件。

0 投票
1 回答
91 浏览

java - javac 生成一个桥接方法,其中包含一个指向抽象方法的 invokespecial 指令

假设以下现实生活中的代码结构:

为 B 生成的字节码是

注意invokespecial 指令指向抽象方法Am() 的使用。在我看来,这必须在运行时根据 JVM 8 规范在invokespecial上导致 AbstractMethodError :

如果以下所有条件都为真,则令 C 为当前类的直接超类。

因此,在我们的示例中,A 将被选为 C。

要调用的实际方法由以下查找过程选择。

1) 如果 C 包含与已解析方法具有相同名称和描述符的实例方法的声明,那么它就是要调用的方法。

所以JVM会选择Am()。

但是运行时异常部分指出:

否则,如果查找过程的第 1 步、第 2 步或第 3 步选择了一个抽象方法,invokespecial 将抛出一个 AbstractMethodError。

因此调用该方法将导致错误。

我只是想知道,为什么 Java 编译器会生成这样的被判失败的字节码?

PS 我猜测上面的桥接方法根本不会被调用,因为 AB 类的最终实现者将覆盖它。但是接下来就出现了下面的问题:java生成这个桥接方法是为了什么目的?

0 投票
1 回答
670 浏览

java - 如何将 Eclipse 指向另一个 ECJ(内部编译器)

EJC(Eclipse 的内部 Java 编译器)中有一个错误,我不想等待官方的错误修复。有没有办法将现有的 Eclipse 安装(比如说 4.6)指向 4.7 beta 的 ECJ 版本?

我知道,我可以替换 .jar(s),但是有没有“官方”的方式来做呢?