问题标签 [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.
java - 如何避免 IntelliJ 重置语言级别?
我遇到了这个问题,这个问题已经在这个网站上得到了多次回答。
我对这个问题的看法有点不同。我有一个使用 maven 3.5.x 和 java release 10 构建良好的项目(在 maven-compiler-plugin 中配置)查看 IntelliJ 的项目结构时,所有模块都有语言级别 10(但项目设置是语言级别 6 和项目结构中选择的sdk是1.8...
但是,即使我将 sdk 更改为 java 10 并将项目语言级别更改为 10,仍然会出现下面粘贴的错误... ????
我的 IntelliJ 版本:IntelliJ IDEA 2018.2.5
要重现此错误:
从版本控制 (GIT) 中签出
GitHub: https ://github.com/jactor-rises/jactor-rises.git
尝试在 IntelliJ 中构建它:
信息:java:编译模块“jactor-commons”时发生错误信息:javac 10.0.1 用于编译 java 源信息:29/10/2018,21:31 - 编译完成,4 秒内出现 1 个错误和 0 个警告 777 ms 错误:java:不支持发布版本 5
javacompiler - Janino 在 android 应用程序中创建一个 java 代码游乐场
我正在尝试创建一个 java 学习 android 应用程序。它应该有一个供用户使用的代码游乐场;可以运行简单的java代码。我将用户代码保存在 java 代码中并尝试运行它。我正在使用 JANINO ,但问题是我无法加载包括用户代码在内的外部类。这是我的代码;
这是 JANINOs 教程;阅读“源代码编译器”部分 http://janino-compiler.github.io/janino/
谢谢。
java - 如何在没有 JDK 的情况下使用 tools.jar 中的 JavaCompiler
我正在尝试创建一个可以.java
在运行时编译提供的文件的应用程序。我知道tools.jar
JDK 中有一个可用的程序编译器。但是,我不能保证应用程序的用户有 JDK。我试图tools.jar
在应用程序中打包并将其作为库引用。当我tools.jar
添加到类路径的引导条目中时,这似乎在 Eclipse IDE 中起作用。将应用程序导出到可运行的 jar(与tools.jar
它一起打包)时,
ToolProvider.getSystemJavaCompiler();
返回null
. 我不确定问题是什么,但我相信这可能与应用程序导出到可运行 jar 时类路径的引导条目未正确保留有关。有任何想法吗?tools.jar
我可以使用编译器的替代品吗?感谢您的耐心等待,因为这是我在这里发布的第一个问题!
java - 是否可以在 Java 中替换依赖库的方法的实现?
我们有一种情况,我们正在使用某个库,我们想自定义库中使用的一个小型私有方法的逻辑。不幸的是,该库编写得不好,无法扩展。
所以基本上,想象一下如果我们有一个ClassA
像这样的类的库:
该类ClassA
由该类在库中使用ClassB
。ClassB
在库中被ClassC
等等使用。ClassB
使用如下代码在构造函数中创建它的依赖项classA = new ClassA()
;(不幸的是)。使用类似;ClassC
的代码在构造函数中创建其依赖项。classB = new ClassB()
等等。
我们想强制每个使用方法buildMessage()
的人ClassA
来获取Hello, Kitty!
消息而不是Hello, World!
(即我们需要将私有方法的实现替换buildSuffixString()
为我们自己的实现)。有没有办法通过使用反射或Java编译器或其他东西来改变私有方法的逻辑?
java - 如何在 javax.tools.JavaCompiler 的类路径中使用远程 jar
我JavaCompiler
用来编译 .java 代码。
它在运行URLClassLoader
用于加载远程 jar 编译的类时对我有用。但在编译时不起作用。
尝试使用类似的选项
还尝试使用自定义JavaFileManager
的 with URLClassLoader
。
它们都不起作用。
java - 使用“内部”JavaCompiler 时如何设置引导类路径
您如何解决以下警告
当使用内部JavaCompiler
?
示例代码(根据我的源代码稍作修改):
我尝试的显而易见的事情是-bootclasspath
在compilerOptions
上面的示例代码中提供。但是您只能在Option.OptionGroup.BASIC
组中提供选项(事实并非如此)。
编辑:更多信息:我正在使用 OpenJdk11,我收到了最多 10 个源的警告。
spring-boot - 在运行时编译具有对嵌套 jar 的依赖项的 Java 类
在 Spring Boot 应用程序中,我在运行时执行以下操作:
- 生成 Java 类
- 编译它
- 使用反射访问编译类的一些静态字段。
我的代码基于这篇文章,但在运行时编译生成的类时遇到问题。在 IDE 中运行时编译工作正常,但从 Spring Boot 运行时 jar 编译失败,提示符号丢失或某些包不存在。我正在编译的类依赖于位于 jar 下的其他类,\BOOT-INF\lib\
并且编译器似乎无法使用现有的类加载器加载这些类。
我已经关注了这篇文章,它假设可以解决这个特定问题,但我UnsupportedOperationException
来自方法
的界面JavaFileManager
。
我在这里遇到了另一种可能的解决方案,但我不清楚完整的实现。
在运行时编译类时,这似乎是一个众所周知的问题,是否有任何明确的解决方案?
我目前正在使用 Java 10.0.2。
java - com.android.builder.dexing.DexArchiveMergerException:合并 dex 档案时出错:
我无法编译我的项目,场景我使用 Android Studio 的“将 Java 文件转换为 Kotlin 文件”将我的一项活动转换为 kotlin,并修复了未正确转换的代码的所有错误。
Java编译器日志:
原因:java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:合并 dex 档案时出错:
com.android.builder.dexing.DexArchiveMergerException:合并 dex 档案时出错:
com.android.tools.r8.CompilationFailedException :编译未能完成
com.android.tools.r8.utils.AbortException:错误:null,无法在单个 dex 文件中容纳请求的类(#方法:110666 > 65536;#字段:67264 > 65536)
build.gradle(应用程序)
build.gradle(项目)
java - Java 编译器会在编译期间计算常量表达式吗?
我注意到枚举值的java.util.concurrent.TimeUnit
方法类似于:
public long toMillis(long d) { return x(d, C3/C2, MAX/(C3/C2)); }
表达式C3/C2
和MAX/(C3/C2)
计算是在编译期间还是在运行时计算的?