使用 dalvikvm 加载类时拒绝重新初始化先前失败的类错误 [英] Rejecting re-init on previously failed class error when loading a Class with dalvikvm
问题描述
我正在尝试在 Lollipop 5.1.1 上使用终端 IDE.使用三星 E7 设备,XDA 上有人提供了终端 IDE 的 mod 版本这里:http://forum.xda-developers.com/showthread.php?t=1340852&page=7
I am trying to use Terminal IDE on Lollipop 5.1.1. Using a Samsung E7 device, a mod version of Terminal IDE is provided by someone on XDA here: http://forum.xda-developers.com/showthread.php?t=1340852&page=7
我试图在那个 mod 中使用 javac 脚本,但它给出了一个不满意的链接错误,说:
I tried to use javac script in that mod but it gave an unsatisfied link error, saying that:
$ javacjava.lang.UnsatisfiedLinkError:org.apache.harmony.security.fortress.Services在 org.apache.harmony.security.fortress.Engine.getServices(Engine.java:158)在 org.apache.harmony.security.fortress.Engine.getInstance(Engine.java:137)在 java.security.cert.CertificateFactory.getInstance(CertificateFactory.java:90)在org.apache.harmony.security.utils.JarUtils.verifySignature(JarUtils.java:83)在 java.util.jar.JarVerifier.verifyCertificate(JarVerifier.java:294)在 java.util.jar.JarVerifier.readCertificates(JarVerifier.java:268)在 java.util.jar.JarFile.getInputStream(JarFile.java:380)在 libcore.net.url.JarURLConnectionImpl.getInputStream(JarURLConnectionImpl.java:222)在 java.net.URL.openStream(URL.java:470)在 java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:444)在 java.util.ResourceBundle.handleGetBundle(ResourceBundle.java:515)在 java.util.ResourceBundle.handleGetBundle(ResourceBundle.java:542)在 java.util.ResourceBundle.handleGetBundle(ResourceBundle.java:542)在 java.util.ResourceBundle.getBundle(ResourceBundle.java:228)在 java.util.ResourceBundle.getBundle(ResourceBundle.java:139)在 com.sun.tools.javac.main.JavaCompiler.version(JavaCompiler.java:112)在 com.sun.tools.javac.main.JavaCompiler.version(JavaCompiler.java:97)在 com.sun.tools.javac.main.Main.bugMessage(Main.java:434)在 com.sun.tools.javac.main.Main.compile(Main.java:421)在 com.sun.tools.javac.main.Main.compile(Main.java:308)在 com.sun.tools.javac.main.Main.compile(Main.java:299)在 com.sun.tools.javac.Main.compile(Main.java:82)在 com.spartacusrex.spartacuside.external.javac.main(javac.java:13)$$ javac java.lang.UnsatisfiedLinkError: org.apache.harmony.security.fortress.Services at org.apache.harmony.security.fortress.Engine.getServices(Engine.java:158) at org.apache.harmony.security.fortress.Engine.getInstance(Engine.java:137) at java.security.cert.CertificateFactory.getInstance(CertificateFactory.java:90) at org.apache.harmony.security.utils.JarUtils.verifySignature(JarUtils.java:83) at java.util.jar.JarVerifier.verifyCertificate(JarVerifier.java:294) at java.util.jar.JarVerifier.readCertificates(JarVerifier.java:268) at java.util.jar.JarFile.getInputStream(JarFile.java:380) at libcore.net.url.JarURLConnectionImpl.getInputStream(JarURLConnectionImpl.java:222) at java.net.URL.openStream(URL.java:470) at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:444) at java.util.ResourceBundle.handleGetBundle(ResourceBundle.java:515) at java.util.ResourceBundle.handleGetBundle(ResourceBundle.java:542) at java.util.ResourceBundle.handleGetBundle(ResourceBundle.java:542) at java.util.ResourceBundle.getBundle(ResourceBundle.java:228) at java.util.ResourceBundle.getBundle(ResourceBundle.java:139) at com.sun.tools.javac.main.JavaCompiler.version(JavaCompiler.java:112) at com.sun.tools.javac.main.JavaCompiler.version(JavaCompiler.java:97) at com.sun.tools.javac.main.Main.bugMessage(Main.java:434) at com.sun.tools.javac.main.Main.compile(Main.java:421) at com.sun.tools.javac.main.Main.compile(Main.java:308) at com.sun.tools.javac.main.Main.compile(Main.java:299) at com.sun.tools.javac.Main.compile(Main.java:82) at com.spartacusrex.spartacuside.external.javac.main(javac.java:13) $奇怪的是有一个 UnsatisfiedLinkError ,因为它没有说 VM 找不到 xyz.so 库或找不到 xyz 方法.我在设备上使用终端 IDE 的
javac
脚本后立即尝试使用logcat
命令,我从那里发现了奇怪的事情:It is strange that there is a UnsatisfiedLinkError , because it doesn't say that VM cannot find xyz.so library or cannot find xyz method. I tried using
logcat
command right after using Terminal IDE'sjavac
script on Device, the odd thing I found from there is :I/art (6558):拒绝重新初始化之前失败的类 java.lang.Class<org.apache.harmony.security.fortress.Services>I/art ( 6558) : rejecting re-init on previously-failed class java.lang.Class<org.apache.harmony.security.fortress.Services>我不明白为什么会这样,javac脚本使用android的
dalvikvm
命令加载I couldn't understand why this happened, The javac script uses android's
dalvikvm
command to loadcom.spartacusrex.spartacuside.external.javaccom.spartacusrex.spartacuside.external.javac类.人们在 sdk 版本
20+
上遇到过这个rejecting re-init
问题,但我不清楚为什么会出现此信息消息以及如何解决.class. People have faced this
rejecting re-init
issue on sdk version20+
but it's not clear to me why this info message uccurs and how to solve it.推荐答案
我将
/system/lib/libjavacrypto.so
复制到终端 IDE 的~/system/lib
文件夹现在 javac 和 dx 工具正在运行.似乎 Google 搞砸了/system/lib 中的事情,导致了错误.回答以便其他人可能会觉得它有用.I copied
/system/lib/libjavacrypto.so
to Terminal IDE's~/system/lib
folder and now javac and dx tools are working. It seems like Google messed up with things in /system/lib which resulted in errors. Answering so someone else might find it useful.这篇关于使用 dalvikvm 加载类时拒绝重新初始化先前失败的类错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!