1

当我偶然发现Terminal-IDE时,我只是在寻找一个不需要root手机的ssh终端,我很高兴我做到了!(更多来自它的创建者在这里。)它是一个 Android 开发环境,旨在在称为“Android 手机”的便携式计算机上工作,它包括您可能称之为“无根手机的可访问 Linux 操作系统”。

好的,现在您知道平台是什么,问题是当我启动提供的 sshd 并使用 ssh 远程登录手机时,我似乎无法让任何 java (Dalvik) 机器工作,而在本地键入的相同操作可以正常工作。一个简单的示例是 Hello World 教程,您可以在其中运行 java 编译器:

# javac hello.java

本地界面的结果是一个闪亮的新 hello.class。从 ssh 登录(运行 bash)完成后,将导致:

# javac hello.java
Dalvik VM unable to locate class 'com/spartacusrex/spartacuside/external/javac'
java.lang.NoClassDefFoundError: com/spartacusrex/spartacuside/external/javac
        at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.spartacusrex.spartacuside.external.javac
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
        ... 1 more

当然,可以查看环境变量...

以下是在本地环境中,但不在远程环境中或不同:

LOOP_MOUNTPOINT=/mnt/obb
ASEC_MOUNTPOINT=/mnt/asec
ANDROID_PROPERTY_WORKSPACE=9,131072
ANDROID_SOCKET_zygote=10
ANDROID_BOOTLOGO=1
BOOTCLASSPATH=/data/data/com.spartacusrex.spartacuside/files/system/classes/android.jar:/system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/framework2.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/HTCDev.jar:/system/framework/HTCExtension.jar:/system/framework/com.htc.framework.jar:/system/framework/filterfw.jar:/system/framework/com.htc.android.bluetooth.jar:/system/framework/wimax.jar:/system/framework/com.orange.authentication.simcard.jar
PATH=/data/data/com.spartacusrex.spartacuside/files/bin:/data/data/com.spartacusrex.spartacuside/files/local/bin:/data/data/com.spartacusrex.spartacuside/files/android-gcc-4.4.0/bin:/data/data/com.spartacusrex.spartacuside/files/system/bin:/data/data/com.spartacusrex.spartacuside/files/system/bin/bbdir:/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
PWD=/data/data/com.spartacusrex.spartacuside/files/system/src/helloworld
EXTERNAL_STORAGE=/mnt/sdcard

以下是在远程环境中,但不是在本地环境中,或者是不同的:

ANDROID_PROPERTY_WORKSPACE=10,32768
ANDROID_BOOTLOGO=1
USER=username
BOOTCLASSPATH=/data/data/com.spartacusrex.spartacuside/files/system/classes/android.jar:/system/framework/core.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar
PATH=/data/data/com.spartacusrex.spartacuside/files/bin:/data/data/com.spartacusrex.spartacuside/files/local/bin:/data/data/com.spartacusrex.spartacuside/files/android-gcc-4.4.0/bin:/data/data/com.spartacusrex.spartacuside/files/system/bin:/data/data/com.spartacusrex.spartacuside/files/system/bin/bbdir:/sbin:/system/sbin:/system/bin:/system/xbin
PS1=\[\033[01;32m\]$USER\[\e[1;31m\]\[\e[1;33m\]@\[\e[1;35m\]$HOSTNAME\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
MKSH=/system/bin/sh
APK=/data/app/com.spartacusrex.spartacuside-1.apk
LOGNAME=username
EXTERNAL_STORAGE=/sdcard

当然,我的注意力已经流向了“BOOTCLASSPATH”。我以前从未听说过 BOOTCLASSPATH,但它似乎是我们 Java 编码人员熟悉的普通 ole“CLASSPATH”的替代品......

建议的解决方案可以在 code.google.com 网站的“问题”下找到,但它们都不起作用。

4

1 回答 1

0

解决方案是简单地更改 BOOTCLASSPATH 以在远程登录中包含与本地登录相同的内容。

当然,“开箱即用”这不应该是一个人遇到的问题。但是,Terminal-IDE 是一个年轻的环境,这只是成长的痛苦之一。

于 2013-04-04T17:16:49.573 回答