Android项目中不能同时写带有java中的main方法的类

在Android项目中遇到一个致命错误,与Java虚拟机的内部实现有关,源于在同一个项目中混合了带有main方法的类。错误指出Android的ADT不支持这样的JUnit测试,但项目并未使用单元测试。解决方案是将包含main方法的服务器类移出Android项目,以防止与Android应用启动冲突。结论是,Android项目不应包含Java的main方法类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天早上写了个注册的功能,使用socket实现。但是运行的时候,爆出了一个很诡异的错误,一般的错误应该是用红色的打印出错误的路径。但是这次错误貌似很严重,是一个内部的错误,好像是虚拟机内部的实现的异常,因为指示出来的是一个cpp文件的错误。报错全文如下:

 

# A fatal error has been detected by the Java Runtime Environment:##  Internal Error (classFileParser.cpp:3161), pid=3464, tid=2324#  Error: ShouldNotReachHere()## JRE version: 6.0_21-b07# Java VM: Java HotSpot(TM) Client VM (17.0-b17 mixed mode windows-x86 )# An error report file with more information is saved as:# C:\Users\Andy\workspace\huaqibei\hs_err_pid3464.log## If you would like to submit a bug report, please visit:#   http://java.sun.com/webapps/bugreport/crash.jsp#这个问题出现的情况是,我在普通的用户界面的程序中添加了一个客户端的socket,进行用户的注册。google了很久,看到一些说是因为Android的ADT实现的JUnit不行,需要改换成java的JUnit测试,但是我这边根本没有用到单元测试的部分。郁闷了好久,到底是怎么回事呢?下午高了半天,半天的宝贵时间啊,还是没解决。晚上看到她在线,狂喜,和她聊天。聊了一会,她下了。突然有了灵感,会不会是因为我写在项目中的server部分有问题,因为server部分有自己的main方法,也就是说在Android项目中既有启动应用程序的activity也有启动java程序的main方法。所以,run的时候,就出现了问题了,此时java应用程序也就是server要启动自己的main方法,但是Android需要启动自己的activity,这时候就没办法做出选择了。(或许,这个是Android的一个bug吧)。然后,我就把server移出Android项目(正确的做法就是应该这样,将他们放在一起是不对的,服务器端课客户端显然不能放在一起),就是将main方法的类移出来,果然程序可以正确执行了。现在我需要验证我的想法,是不是因为main方法的问题呢?于是我在Android客户端项目中添加了一个带有main方法的输出helloworld的类,果然出现的相同的错误,基本验证了自己的想法,但是不知道为什么这样。结论教训:在Android项目中不能同时写带有java中的main方法的类。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值