当前页面: 开发资料首页 → Eclipse 专题 → 用Eclipse执行程序报错
用Eclipse执行程序报错
摘要: 用Eclipse执行程序报错
我用Eclipse执行以下程序:
package string;
class SplitString
{
private String str;
private int byteNum;
public SplitString(){}
public SplitString(String str,int byteNum)
{
this.str=str;
this.byteNum=byteNum;
}
public void splitIt()
{
byte bt[]=str.getBytes();
System.out.println("Length of this String ===>"+bt.length);
if(byteNum>1)
{
if(bt[byteNum]<0)
{
String substrx=new String(bt,0,--byteNum);
System.out.println(substrx);
}else
{
String substrex=new String(bt,0,byteNum);
System.out.println(substrex);
}
}else
{
if(byteNum==1)
{
if(bt[byteNum]<0)
{
String substr1=new String(bt,0,++byteNum);
System.out.println(substr1);
}else
{
String subStr2=new String(bt,0,byteNum);
System.out.println(subStr2);
}
}else
{
System.out.println("输入错误!!!请输入大于零的整数:");
}
}
}
}
public class TestSplitString {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
String str="我ABC汉DEF";
int num=6;
SplitString sptstr = new SplitString(str,num);
sptstr.splitIt();
}
}
以上代码应该没有错误,但是为什么我执行后老是出现以下这个问题?
Exception in thread "main" java.lang.Error: 无法解析的编译问题:
at TestSplitString.main(TestSplitString.java:58)
在Eclipse的问题报错提示里写着:声明的包与期望的包不匹配,错误行:第1行。
你这是两个类,应该放在两个java文件中,每个类都在一个文件中
第一个文件在package string中
第二个类(应该在另外一个java文件中)却没有,所以找不到
另外的方法是去掉 public class TestSplitString (和相应的括号)
就可以运行了
tianfang(天放) 你好,你所说的“第二个类(应该在另外一个java文件中)却没有”这句如何理解?请问能否给出详细解答?应该如何修改才能通过运行 ?你说的另外的方法我觉得是不对的,一个程序如果没有public类的话,他应该是不能运行的吧?去掉之后是无法运行的,因为public class TestSplitString{}决定了该JAVA的文件名。
......类的概念看来LZ还没有搞明白,其实类就相当于一个函数,在一个JAVA文件中可以存在多个类,但是只能存在一个和JAVA文件同名的主类。(也可以没有主类)
你可以吧其它的类看成都是分别实现不同的函数。
而主函数必须在主类中,如果在其它类中也出现了主函数必然要出错的
RockWang2819(NWの鬼眼狂刀)请问能否看看这个程序的问题出在哪里?为何运行无法通过?
LZ的代码在JC里没什么问题的说哦........
java一般约定一个类放在一个文件中,就是每个类放在 类名.java,
你的代码中 public class TestSplitString 就是第二个类的定义,把这个类当作SplitString 的测试类,主程序在这个类中。
所以应该把TestSplitString 放在第二个文件TestSplitString .java中,然后和SplitString 放在同一个包(package string)中
我在JCreator运行也无法通过,它的出错信息为:Exception in thread "main" java.lang.NoSuchMethodError: main 请问你能否也把你环境变量里的path设置贴出来参考参考?
超级慢...LZ你的JAVA文件是叫TestSplitString.JAVA吧
刚才我扔到eclipse里,它报的错误是Could not find main class.....
我也是刚开始用eclipse,还有很多不明白的地方呢
文件自然是TestSplitString.java啦,这个是不会犯错的啦,我在JC里运行就无法得到结果哦,有个网友也说他的在JC里能运行通过,所以我在怀疑是不是环境变量的问题,我也是刚开始用eclipse,在那里就报错成我之前所说的。
JC的输出结果......
Length of this String ===>10
我ABC
你的JAVA文件必须是TestSplitString.JAVA才成,而且刚才你的JC报的错误好象是你的JC本身有问题,是不是你打的破解补丁不对?还有你的JDK是什么版本?
关于PATH,我是新装的系统,没进行过任何设置
Path:%SystemRoot%/system32;%SystemRoot%;%SystemRoot%/System32/Wbem;C:/Program Files/Microsoft SQL Server/80/Tools/BINN
我的JC版本是:HA-JCreatorPro_3.50.013_Fix-Georgewing,而JDK版本是1.6.0的。我的PATH是:C:/Program Files/Java/jdk1.6.0/bin;%SystemRoot%/system32;%SystemRoot%;%SystemRoot%/System32/Wbem
真不知问题出在何处,照你这样说这个代码是不会有问题的了。应该出在系统的设置上。你的JC什么版本的?
OK了.....我把你的PACKAGE去掉了,然后工程名和文件名都取相同的TestSplitString
然后就得到正确的结果了。
另:
LZ兄下次帖代码能不能给缩进一下,看起来好累的说。
JC是3.5 E文版,JDK是1.5,eclipse是3.1。
你先把包去了试试,我去了包就好了
呵呵,还是你强,我照你的把PACKAGE去掉就OK了,谢谢!!我先看看如何奖励分数,把20分都奖励你,谢谢你的帮忙,不过我想问:为什么要把PACKAGE去掉呢?他起到什么作用?
说实话,我从写JAVA到现在就从来没用过package这个东西呢~~~~XD
这个还是问问高手吧~~~~