使用 dalvikvm 加载 Class 时拒绝重新初始化先前失败的 class 错误
Rejecting re-init on previously failed class error when loading a Class with dalvikvm
我正在尝试在 Lollipop 5.1.1 上使用终端 IDE。使用三星 E7 设备,mod 版本的终端 IDE 由 XDA 上的某人提供
这里:
http://forum.xda-developers.com/showthread.php?t=1340852&page=7
我试图在那个 mod 中使用 javac 脚本,但它给出了一个不满意的 link 错误,说:
$ 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
命令,我从那里发现的奇怪的东西是:
I/art ( 6558) : rejecting re-init on previously-failed class java.lang.Class<org.apache.harmony.security.fortress.Services>
我不明白为什么会这样,
javac 脚本使用 android 的 dalvikvm
命令加载
com.spartacusrex.spartacuside.external.javac
class。人们在 sdk 版本 20+
上遇到过这个 rejecting re-init
问题,但我不清楚为什么会出现此信息消息以及如何解决它。
我已将 /system/lib/libjavacrypto.so
复制到终端 IDE 的 ~/system/lib
文件夹,现在 javac 和 dx 工具正在运行。
似乎 Google 搞砸了 /system/lib 中的东西,导致了错误。
回答这样其他人可能会觉得有用。
我正在尝试在 Lollipop 5.1.1 上使用终端 IDE。使用三星 E7 设备,mod 版本的终端 IDE 由 XDA 上的某人提供 这里: http://forum.xda-developers.com/showthread.php?t=1340852&page=7
我试图在那个 mod 中使用 javac 脚本,但它给出了一个不满意的 link 错误,说:
$ 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
命令,我从那里发现的奇怪的东西是:
I/art ( 6558) : rejecting re-init on previously-failed class java.lang.Class<org.apache.harmony.security.fortress.Services>
我不明白为什么会这样,
javac 脚本使用 android 的 dalvikvm
命令加载
com.spartacusrex.spartacuside.external.javac
class。人们在 sdk 版本 20+
上遇到过这个 rejecting re-init
问题,但我不清楚为什么会出现此信息消息以及如何解决它。
我已将 /system/lib/libjavacrypto.so
复制到终端 IDE 的 ~/system/lib
文件夹,现在 javac 和 dx 工具正在运行。
似乎 Google 搞砸了 /system/lib 中的东西,导致了错误。
回答这样其他人可能会觉得有用。