不是第一次接触java的java开发人员,无法让gradle工作。
我正在尝试安装this extension对于吉德拉来说。自述文件说我应该运行:
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项目,但是可以从 build file in the extension 看到它应用了基础项目中的脚本:
apply from: new File(ghidraInstallDir).getCanonicalPath() + "/support/buildExtension.gradle"
然后,如果您前往 Ghidra 项目并找到 extension file ,可以看到它确实配置了源版本和目标版本:
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 可能实际上并不支持它 -或者它可能工作得很好;尝试一下:)
关于java - Gradle:使用 -source 15 或更高版本启用文本 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72678568/