问题描述
我想在 armhf 上的 chroot 环境中运行 gradle。
要设置 chroot,我使用:
#This will need ~5-10 minutes
sudo debootstrap --arch armhf sid armhf-chroot
sudo chroot armhf-chroot
#Now in the chroot environment run
mount -t proc /proc proc/
apt install openjdk-15-jdk gradle
现在,例如运行 gradle --version
:
输出:
org.gradle.api.internal.classpath.UnkNownModuleException: Cannot locate JAR for module 'ant' in distribution directory '/usr/share/gradle'.
at org.gradle.api.internal.classpath.DefaultModuleRegistry.getExternalModule(DefaultModuleRegistry.java:78)
at org.gradle.api.internal.DefaultClasspathProvider.findClasspath(DefaultClasspathProvider.java:45)
at org.gradle.api.internal.DefaultClasspathRegistry.getClasspath(DefaultClasspathRegistry.java:34)
at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:48)
at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:37)
at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
在那之后,我尝试使用更新的版本(比如 6.8.3,而不是 apt 的 4.xy 版本):
apt purge ant gradle
apt autoremove
apt install wget unzip
wget https://services.gradle.org/distributions/gradle-6.8.3-bin.zip
unzip gradle-6.8.3-bin.zip
cd gradle-6.8.3/bin
现在运行 ./gradle --version
失败并出现相同的错误:
org.gradle.api.internal.classpath.UnkNownModuleException: Cannot locate JAR for module 'ant' in distribution directory '/gradle-6.8.3'.
at org.gradle.api.internal.classpath.DefaultModuleRegistry.loadExternalModule(DefaultModuleRegistry.java:108)
at org.gradle.api.internal.classpath.DefaultModuleRegistry.getExternalModule(DefaultModuleRegistry.java:96)
at org.gradle.api.internal.DefaultClasspathProvider.findClasspath(DefaultClasspathProvider.java:76)
at org.gradle.api.internal.DefaultClasspathRegistry.getClasspath(DefaultClasspathRegistry.java:35)
at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:48)
at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:37)
at org.gradle.launcher.GradleMain.main(GradleMain.java:31)
我找到了 this 个帖子,但仍然失败:
export GRADLE_HOME=/gradle-6.8.3
export GRADLE_USER_HOME=/gradle-6.8.3
现在我的第三次尝试是使用 gradle 包装器,但这仍然失败:
cd /
apt install git
#Some sample project,the project itself is not that important
git clone https://github.com/jitpack/gradle-simple
cd gradle-simple
./gradlew
这会导致此错误:
Downloading https://services.gradle.org/distributions/gradle-6.1.1-all.zip
Exception in thread "main" java.lang.ExceptionInInitializerError
at java.base/javax.crypto.Cipher.getInstance(Cipher.java:546)
at java.base/sun.security.ssl.SSLCipher.isTransformationAvailable(SSLCipher.java:510)
at java.base/sun.security.ssl.SSLCipher.<init>(SSLCipher.java:499)
at java.base/sun.security.ssl.SSLCipher.<clinit>(SSLCipher.java:82)
at java.base/sun.security.ssl.CipherSuite.<clinit>(CipherSuite.java:69)
at java.base/sun.security.ssl.SSLContextImpl.getApplicableSupportedCipherSuites(SSLContextImpl.java:343)
at java.base/sun.security.ssl.SSLContextImpl$AbstractTLSContext.<clinit>(SSLContextImpl.java:556)
at java.base/java.lang.class.forName0(Native Method)
at java.base/java.lang.class.forName(Class.java:377)
at java.base/java.security.Provider$Service.getImplClass(Provider.java:1917)
at java.base/java.security.Provider$Service.newInstance(Provider.java:1893)
at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:236)
at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:164)
at java.base/javax.net.ssl.SSLContext.getInstance(SSLContext.java:184)
at java.base/javax.net.ssl.SSLContext.getDefault(SSLContext.java:110)
at java.base/javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:83)
at java.base/javax.net.ssl.HttpsURLConnection.getDefaultSSLSocketFactory(HttpsURLConnection.java:334)
at java.base/javax.net.ssl.HttpsURLConnection.<init>(HttpsURLConnection.java:291)
at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.<init>(HttpsURLConnectionImpl.java:81)
at java.base/sun.net.www.protocol.https.Handler.openConnection(Handler.java:62)
at java.base/sun.net.www.protocol.https.Handler.openConnection(Handler.java:57)
at java.base/java.net.URL.openConnection(URL.java:1101)
at org.gradle.wrapper.Download.downloadInternal(Download.java:63)
at org.gradle.wrapper.Download.download(Download.java:52)
at org.gradle.wrapper.Install$1.call(Install.java:62)
at org.gradle.wrapper.Install$1.call(Install.java:48)
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:69)
at org.gradle.wrapper.Install.createdist(Install.java:48)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:107)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:62)
Caused by: java.lang.SecurityException: Can not initialize cryptographic mechanism
at java.base/javax.crypto.JceSecurity.<clinit>(JceSecurity.java:121)
... 30 more
Caused by: java.lang.SecurityException: Couldn't iterate through the jurisdiction policy files: unlimited
at java.base/javax.crypto.JceSecurity.setupJurisdictionPolicies(JceSecurity.java:374)
at java.base/javax.crypto.JceSecurity$1.run(JceSecurity.java:112)
at java.base/javax.crypto.JceSecurity$1.run(JceSecurity.java:109)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:554)
at java.base/javax.crypto.JceSecurity.<clinit>(JceSecurity.java:108)
... 30 more
在研究这个问题后,我发现了两个相关的帖子:this one 和 this。
但似乎所有这些问题都与 Java 15 无关,而更像是 Java 7-9。
我的机器:5.10.0-4-amd64 #1 SMP Debian 5.10.19-1 (2021-03-02) x86_64 GNU/Linux
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)