尝试在Android Studio中编译项目时出现以下错误:
Gradle: error: diamond operator is not supported in -source 1.6
Run Code Online (Sandbox Code Playgroud)
在我找到的所有项目偏好中,我已将1.7设置为目标.项目SDK中1.7 SDK下显示的路径也是java 1.7安装的正确路径.
即使我在终端中运行java -version,它也告诉我我正在运行java 1.7.
我试图将JAVA_HOME env变量设置为:
/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)
错误不会消失.如何消除错误?
Java 9 javac有一个新的标志--release:
> javac --help
...
--release <release>
Compile for a specific VM version. Supported targets: 6, 7, 8, 9
Run Code Online (Sandbox Code Playgroud)
它-source与-target旗帜有什么不同?它只是一个捷径-source X -target X吗?
只需将我的一个项目从 Java-15 升级到 16(使用此处的最新版本)。在编译使用 lombok 的项目时,例如:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.16</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我有点被堆栈跟踪卡住了
Caused by: java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor (in unnamed module @0x4e670245) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing to unnamed module @0x4e670245
at lombok.javac.apt.LombokProcessor.getJavacProcessingEnvironment (LombokProcessor.java:433)
at lombok.javac.apt.LombokProcessor.init (LombokProcessor.java:92)
at lombok.core.AnnotationProcessor$JavacDescriptor.want (AnnotationProcessor.java:160)
at lombok.core.AnnotationProcessor.init (AnnotationProcessor.java:213)
at lombok.launch.AnnotationProcessorHider$AnnotationProcessor.init (AnnotationProcessor.java:64)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$ProcessorState.<init> (JavacProcessingEnvironment.java:702)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors$ProcessorStateIterator.next (JavacProcessingEnvironment.java:829)
Run Code Online (Sandbox Code Playgroud)
现在,至少我认为我知道解决这个问题的技巧,但即使在尝试以下配置时 maven-compiler-plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>16</source>
<target>16</target>
<!-- <release>16</release>-->
<compilerArgs>
<arg>--enable-preview</arg>
<arg>-Xlint:all</arg>
<arg>--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
</compilerArgs>
<!--for unmappable …Run Code Online (Sandbox Code Playgroud) 我想在Gradle构建文件中设置所需的Java版本,例如7或8,而不必指定本地JDK安装的实际路径.
这可能吗 ?
我有一个现有的Spring boot应用程序,我建立gradle.这些天我一直在使用JDK / JRE 8,现在我正在尝试使用JDK-11
因此,要检查兼容性,我设置JAVA_HOME到JDK-11,但试图编译Java 8模式
我在下面添加了以下块 build.gradle
compileJava {
targetCompatibility = '1.8'
}
Run Code Online (Sandbox Code Playgroud)
然后我JAVA_HOME明确地设置set JAVA_HOME=C:\Users\arun\Desktop\jdk-11.0.1
然后执行 gradlew clean build
但是我因以下例外而停止了
> Configure project :
Build Version = build-182-ga03cf6c
> Task :compileJava FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':compileJava'.
> warning: source release 11 requires target release 11
Run Code Online (Sandbox Code Playgroud)
如何指向我JAVA_HOME来JDK-11,但仍然在执行它Java-8 …