当我偶然发现terminal - ide时,我只是在寻找一个不需要扎根我的手机的ssh终端,我很高兴我做到了!(更多内容请点击这里。)它是一个Android开发环境,设计用于便携式计算机上,称为"Android手机",它包括你可能称之为"非根手机可访问的Linux操作系统"。
OK,现在您知道平台是什么,问题是,当我启动提供的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=[ 33[01;32m]$USER[e[1;31m][e[1;33m]@[e[1;35m]$HOSTNAME[ 33[00m]:[ 33[01;34m]w[ 33[00m]$
MKSH=/system/bin/sh
APK=/data/app/com.spartacusrex.spartacuside-1.apk
LOGNAME=username
EXTERNAL_STORAGE=/sdcard
当然,我的注意力已经流向了"BOOTCLASSPATH"。我以前从未听说过BOOTCLASSPATH,但它似乎是我们java编码人员熟悉的简单的"CLASSPATH"的替代品…
建议的解决方案可以在code.google.com网站的"问题"下找到,但没有一个有效。
解决方案是简单地修改BOOTCLASSPATH,使其在远程登录中包含与本地登录相同的内容。
当然,"开箱即用"不应该是一个问题。但是,Terminal-IDE是一个年轻的环境,这只是成长中的烦恼之一。