A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 疯疯疯疯疯子 中级黑马   /  2015-8-29 17:00  /  1275 人查看  /  20 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

错误:找不到或无法加载主类
这是几个意思,奶奶的,都找不到是什么问题

20 个回复

正序浏览
SYAD 中级黑马 2015-8-30 08:18:30
19#
一般是类名不对,或者文件名不对吧
回复 使用道具 举报
{:2_32:}要细心一点儿
回复 使用道具 举报
q370349954 来自手机 中级黑马 2015-8-30 08:03:10
17#
文件名要和加public修饰的类名相同
回复 使用道具 举报
疯疯疯疯疯子 发表于 2015-8-30 02:57
package day23;
/*
编写一个聊天程序

刚刚点错了,
1,runnable这个接口有没有定义?
2,文件名是否为SendAndRecevie.java
3,虽然没有学过多线程,不过,按照我的理解,应该是发送端指定发送的端口与数据,接收端要么只监测这个端口的信息,要么就全部端口都接收到该信息。你的代码,则是由接收者指定接收端口,发送者不指定。不知这个是不是正确的理解。
回复 使用道具 举报
跟着视频去学好不,都是些基础的问题
回复 使用道具 举报
cat73 黑马帝 2015-8-30 06:09:18
14#
运行的时候 直接写类名就成 不要在后面加上 .class
回复 使用道具 举报
疯疯疯疯疯子 发表于 2015-8-30 02:57
package day23;
/*
编写一个聊天程序

我用的是eclipse运行的,所以应该没有你说的那个问题
回复 使用道具 举报
a80C51 发表于 2015-8-30 00:38
方便把你的源码打包一下,然后放出来,看看么?
另外,我说的是,运行java命令时,应该直接输名字,不需要 ...

package day23;
/*
编写一个聊天程序
有收数据的部分和发数据的部分
这两个部分同时进行
那iu索要用到多线程技术
一个线程控制收,一个线程控制发

因为收和发动作是不一致的,所以要定义连个run方法
而且这两哥方法要封装到不同的类中
*/
import java.io.*;
import java.net.*;
class Send implements Runnable //发送端
{
        private DatagramSocket ds;
        public Send(DatagramSocket ds)
        {
                this.ds=ds;
        }
       
        BufferedReader bufr =null;
        public void run()
        {
                try
                {
                bufr =
                                new BufferedReader(new InputStreamReader(System.in));
                       
                        String line = null;
                        while((line=bufr.readLine())!=null)
                        {
                                if("886".equals(line))
                                        break;
                                byte[] buf = new byte[1024*64];
                                DatagramPacket dp =
                                        new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.100"),10003);
                                ds.send(dp);
                        }
                       
                }
                catch(Exception e)
                {
                        throw new RuntimeException("发送失败");
                }
                finally
                {
                        try
                        {
                                if(bufr !=null)
                                        bufr.close();
                        }
                        catch(Exception e)
                        {
                                throw new RuntimeException("读取关闭失败");
                        }
                }
        }
}


class Receive implements Runnable
{
        private DatagramSocket ds;
       
        public Receive(DatagramSocket ds)
        {
                this.ds=ds;
        }
       
        public void run()
        {
                byte[] buf = new byte[1024];
                DatagramPacket dp =
                        new DatagramPacket(buf,buf.length);
                String ip=dp.getAddress().getHostAddress();
                String date = new String(dp.getData(),0,dp.getLength());//注意
                System.out.println(ip+":"+date);
        }
}



public class SendAndRecevie {

        public static void main(String[] args)  {
                // TODO Auto-generated method stub
                try
                {       
                        DatagramSocket sendSocket = new DatagramSocket();
                        DatagramSocket receiveSocket=new DatagramSocket(10003);
                        new Thread(new Send(sendSocket)).start();
                        new Thread(new Receive(receiveSocket)).start();
                       
                }
                catch(Exception e)
                {
                        throw new RuntimeException("聊天失败");
                }
               
        }

}


点评

1,runnable这个接口,有没有定义? 2,虽然没有学过多线程编辑,按照我自己的理解,接收器应该监听对应端口数据,而发送端应该决定是通过哪个端口发送数据。你的程序给我感觉是由接收者指定侦测端口,而发送器则会   发表于 2015-8-30 06:08
回复 使用道具 举报
本帖最后由 a80C51 于 2015-8-30 00:42 编辑
疯疯疯疯疯子 发表于 2015-8-30 00:08
我就三个类,都不能去掉class啊,没有多余的class,去掉就不是类了

方便把你的源码打包一下,然后放出来,看看么?
另外,我说的是,运行java命令时,应该直接输名字,不需要后面.class。举个例子:
如果你的文件是xxx.java文件,使用javac -d . xxx.java进行编译后,在当前文件夹下,会出现 xxx.java和xxx.class两个文件。
接着,输入java xxx即可运行该java文件。不要输入java xxx.class,这样做,会导致那个错误。
另外,你是不是每个类都定义成public class类?
还有是不是每个类里面,都有public static void main(String[] args)的方法?

回复 使用道具 举报
加油  会学好的     
回复 使用道具 举报
boboyuwu 发表于 2015-8-29 18:19
main()里面加上string[]args

主函数中已经有这个了
回复 使用道具 举报
a80C51 发表于 2015-8-29 17:56
你说的是这种错误吧?把.class去掉,然后再运行,看看。

我就三个类,都不能去掉class啊,没有多余的class,去掉就不是类了
回复 使用道具 举报
347891332 发表于 2015-8-29 17:49
你用的是什么控制台,

eclipse。。。。。
回复 使用道具 举报
a80C51 发表于 2015-8-29 17:56
你说的是这种错误吧?把.class去掉,然后再运行,看看。

是,就是这个问题,把class去掉?我很多个类的,我去试试,谢谢
回复 使用道具 举报
main()里面加上string[]args
回复 使用道具 举报
你说的是这种错误吧?把.class去掉,然后再运行,看看。

QQ图片20150829175505.png (2.24 KB, 下载次数: 32)

QQ图片20150829175505.png
回复 使用道具 举报
347891332 发表于 2015-8-29 17:19
类名和文件名不一样,基本是这样吧,你用的是那个快捷工作台吧

以前碰到过这样的问题,后面是发现是加了public
现在回头找没有加这个。。。。a啊啊啊啊啊啊 ,快受不了了
回复 使用道具 举报
看看路径,路径没错的话 就是没有把JAVA加到环境变量里。
回复 使用道具 举报
记得很前面的错误了。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马