Gradle:使用-source 15或更高版本来启用文本块



不是java开发者第一次接触java,无法让gradle工作

我正在尝试为Ghidra安装这个扩展。自述文件说我应该运行:

GHIDRA_INSTALL_DIR=${GHIDRA_HOME} gradle

我已经在mac上安装了java 18和gradle。当运行上面的代码时,我得到以下错误:

Starting a Gradle Daemon (subsequent builds will be faster)
> Task :copyDependencies NO-SOURCE
> Task :compileJava FAILED
/home/gradle/project/src/main/java/ghidra/app/plugin/core/analysis/eBPFSolanaAnalyzer.java:156: error: text blocks are not supported in -source 11
func.setComment("""
^
(use -source 15 or higher to enable text blocks)
1 error
FAILURE: Build failed with an exception.

尝试运行docker也(认为这是我的安装问题):

docker run --rm -u gradle -e GHIDRA_INSTALL_DIR=/home/gradle/project/installed -v "$PWD":/home/gradle/project -w /home/gradle/project gradle gradle

但是还是得到了完全相同的错误。

为什么gradle认为我有Java 11,而实际上我有Java 18?gradle -v给我:

------------------------------------------------------------
Gradle 7.4.2
------------------------------------------------------------
Build time:   2022-03-31 15:25:29 UTC
Revision:     540473b8118064efcc264694cbcaa4b677f61041
Kotlin:       1.5.31
Groovy:       3.0.9
Ant:          Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM:          18.0.1.1 (Homebrew 18.0.1.1+0)
OS:           Mac OS X 12.4 x86_64

这可能是一个全新的问题,但就像我说的,我从来没有接触过java:)任何帮助,超级感谢。

该错误意味着项目已被配置为与Java 11兼容,这就是为什么您不能使用新版本的功能(即使您使用新版本运行)。

虽然我不知道Ghidra项目,但您可以从扩展名中的构建文件中看到它应用了基础项目的脚本:

apply from: new File(ghidraInstallDir).getCanonicalPath() + "/support/buildExtension.gradle"

然后,如果您转到Ghidra项目并找到扩展文件,您可以看到它确实配置了源和目标版本:

compileJava {
sourceCompatibility = ghidraProps.getProperty('application.java.compiler')
targetCompatibility = ghidraProps.getProperty('application.java.compiler')
dependsOn copyDependencies
}

这些似乎来自位于Ghidra/application.properties中的属性文件:

application.name=Ghidra
application.version=10.2
application.release.name=DEV
application.layout.version=1
application.gradle.min=6.8
application.java.min=11
application.java.max=
application.java.compiler=11

所以我想如果您在本地安装中找到这个文件,您可以将application.java.compiler属性更改为18。只是要知道,Ghidra可能实际上不支持它——或者它可能工作得很好;试一试:)

相关内容

最新更新