我是IT学生,我还在学习java和android开发 我正在测试桌面应用程序和Android应用程序之间的一些udp流量。 但每次我尝试运行Android应用程序时都会显示以下错误消息:
VM初始化期间发生错误 java / lang / NoClassDefFoundError:java / lang / ref / FinalReference
这是UDP客户端的代码
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketAddress;
import android.app.Activity;
import android.util.Log;
public class Client extends Activity {
public static void main(String[] args) throws IOException {
try {
int bufSize = 4096;
int port = 12345;
DatagramSocket sock = new DatagramSocket(port);
sock.setReceiveBufferSize(bufSize);
byte[] buffer = new byte[bufSize];
while (true) {
DatagramPacket p = new DatagramPacket(buffer, bufSize);
sock.receive(p);
Log.d("Client", "Received: " + new String(p.getData()));
}
}finally{}
}
}
代码可能包含一些可能不起作用的部分,但它不会出错。
我只是想知道虚拟机无法启动的原因。
grtz
答案 0 :(得分:4)
看起来您的Java SDK安装不正确。
尝试查看java是否在您的系统路径中。您可以在终端上尝试javac -version命令。如果产生相同的错误,则需要将其添加到路径中。
此外,这家伙似乎遇到了与你相同的问题,请检查link:
答案 1 :(得分:2)
我找到了解决我错误的方法 我使用android项目就像一个java应用程序,带有一个main函数。这给了无法部署虚拟机的问题 代码需要在活动的oncreate函数中,而不是在main函数中 谢谢您的帮助。
grtz
答案 2 :(得分:0)
我正在使用eclipse IDE阅读那篇文章,也许它与你的情况类似:
答案 3 :(得分:0)
按顺序在UBUNTU 12.04LTS上执行以下步骤:
javac -version
使用vi在文件/opt/eclipse/eclipse.ini
顶部添加以下行:
-vm
/usr/bin /*if javac is in /usr/bin */
/usr/share/jdk7/usr/java/jdk1.7.0_25/bin /*if this is the path for JDK */