Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaCommandCapture中RootTools引发的ClassNotFoundException_Java_Android_Eclipse_Roottools - Fatal编程技术网

JavaCommandCapture中RootTools引发的ClassNotFoundException

JavaCommandCapture中RootTools引发的ClassNotFoundException,java,android,eclipse,roottools,Java,Android,Eclipse,Roottools,我遵循了RootTools和wiki页面上的说明,但是当我在onCreate()中加载应用程序时,我得到了一个ClassNotFoundException:com.stericson.RootTools.containers.RootClass: import com.stericson.RootTools.RootTools; import com.stericson.RootTools.containers.RootClass; import com.stericson.RootTools.

我遵循了RootTools和wiki页面上的说明,但是当我在onCreate()中加载应用程序时,我得到了一个ClassNotFoundException:com.stericson.RootTools.containers.RootClass:

import com.stericson.RootTools.RootTools;
import com.stericson.RootTools.containers.RootClass;
import com.stericson.RootTools.exceptions.RootDeniedException;
import com.stericson.RootTools.execution.CommandCapture;
import com.stericson.RootTools.execution.JavaCommandCapture;
import com.stericson.RootTools.execution.Shell;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    RootTools.debugMode = true; //ON
    RootTools.log("roottools is logging");
    RootTools.handlerEnabled = false;

    Shell shell;
    try {
        shell = RootTools.getShell(true);
        JavaCommandCapture cmd = new JavaCommandCapture(
                43,
                false,
                this,
                "com.mycompany.TestActivity.RootToolsTest") {

            @Override
            public void commandOutput(int id, String line) {
                super.commandOutput(id, line);

            }
        };
        shell.add(cmd);
    } catch (Exception e) {
        e.printStackTrace();
    }
...
@RootClass.Candidate
private class RootToolsTest{
    public RootToolsTest(){
        Log.d("RootToolsTest", "testing a Java class run as root");
    }
}
当我尝试RootTools的测试类com.stericson.RootToolsTests.NativeJavaClass时,也发生了同样的事情。我尝试了许多配置来放置和包含RootTools.jar文件(最显著的是确保在Eclipse中检查了RootTools jar的导出并将其移动到订单和导出列表的顶部),但ClassNotFoundException仍然存在。准确的logcat输出如下所示:

06-02 07:27:45.529: D/RootTools v3.4(5165): roottools is logging
06-02 07:27:45.529: D/RootTools v3.4(5165): Starting Root Shell!
06-02 07:27:45.539: D/RootTools v3.4(5165): Starting shell: su
06-02 07:27:46.409: D/RootTools v3.4(5165): CommandHandler not created
06-02 07:27:46.429: D/RootTools v3.4(5165): Executing: dalvikvm -cp /data/data
/com.hdradio.fmdelverrooted/files/anbuild.dex com.android.internal.util.WithFramework 
com.stericson.RootTools.containers.RootClass 
com.hdradio.fmdelver.core.DelverActivity.RootToolsTest
06-02 07:27:46.749: D/Command(5165): ID: 43, java.lang.ClassNotFoundException: 
com.stericson.RootTools.containers.RootClass
06-02 07:27:46.759: D/Command(5165): ID: 43,at java.lang.Class.classForName(Native Method)
06-02 07:27:46.759: D/Command(5165): ID: 43,at java.lang.Class.forName(Class.java:217)
06-02 07:27:46.759: D/Command(5165): ID: 43,at java.lang.Class.forName(Class.java:172)
06-02 07:27:46.769: D/Command(5165): ID: 43,at 
com.android.internal.util.WithFramework.main(WithFramework.java:36)
06-02 07:27:46.769: D/Command(5165): ID: 43,at dalvik.system.NativeStart.main(Native 
Method)
06-02 07:27:46.769: D/Command(5165): ID: 43, Caused by: java.lang.NoClassDefFoundError: 
com/stericson/RootTools/containers/RootClass
06-02 07:27:46.769: D/Command(5165): ID: 43,    ... 5 more
06-02 07:27:46.769: D/Command(5165): ID: 43, Caused by: java.lang.ClassNotFoundException: 
com.stericson.RootTools.containers.RootClass
06-02 07:27:46.769: D/Command(5165): ID: 43,at 
dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
06-02 07:27:46.769: D/Command(5165): ID: 43,at 
java.lang.ClassLoader.loadClass(ClassLoader.java:501)
06-02 07:27:46.769: D/Command(5165): ID: 43,    at 
java.lang.ClassLoader.loadClass(ClassLoader.java:461)
06-02 07:27:46.769: D/Command(5165): ID: 43,    ... 5 more
06-02 07:27:46.979: D/RootTools v3.4(5165): Command 43 finished.
我的.classpath看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry exported="true" kind="lib" path="/Users/myhome/devel_resources
/code/RootTools/RootTools-3.4.jar"/>
    <classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry exported="true" kind="con" 
path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry exported="true" kind="con" 
path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>

我的开发系统配置如下: 操作系统:Mac OS X 10.9.2 日食:开普勒 ADT:22.3 RootTools版本:3.4

我的目标平台是: 安卓:4.1.1 型号:索尼Xperia E C1504(采用SRSRoot和“甘道夫”漏洞) 固件:库存内核Xperia E C1505_11.3.A.0.47(应该也适用于C1504)


你知道为什么安卓找不到com.stericson.RootTools.containers.RootClass类吗?

发生在我身上,jar文件被刷新,而.class文件实际上不存在。这正是异常告诉您的。

欢迎使用堆栈溢出。请添加更多细节(你是如何发现的,你是如何更正的),即使听起来很明显。如果您不想删除您的答案,请添加更多信息。据我所知,jar中存在RootClass.class文件。我重新下载并重新配置了我的项目以进行检查,结果是相同的(ClassNotFoundException)。我知道这已经有一年了,但您很可能没有将dex文件复制到应用程序的文件目录中。