2011-12-16 67 views
0

我知道当我找出这个问题时,我会感觉像是一团糟。我试图做一个非常简单的客户端/服务器,并从命令行运行它。它从Eclipse运行良好,但不是从cmd运行。这里的客户端:NoClassDef从cmd运行但未运行时发现

package com.mycompany.pdr.client; 

import java.io.BufferedOutputStream; 
import java.io.IOException; 
import java.io.OutputStreamWriter; 
import java.net.Socket; 
import java.net.UnknownHostException; 
public class SimpleClientSend { 
public static void main(String[] args) { 


    String host = "127.0.0.1"; 
    int port = 11048; 
    String dataToSend = "HELLO SERVER"; 

    System.out.println("> Trying to connect..."); 
    System.out.println("> Opening connection to server [" + host + ":" 
      + port + "]..."); 

    Socket socket1Connection; 
    try { 
     socket1Connection = new Socket(host, port); 
     System.out.println("> Connected..."); 
     System.out.println("> Trying to write data... [ " + dataToSend + " ]"); 
     BufferedOutputStream bos = new BufferedOutputStream(
       socket1Connection.getOutputStream()); 
     /* 
     * Instantiate an OutputStreamWriter object with the optional 
     * character encoding. e.g. UTF-8 
     */ 
     OutputStreamWriter osw = new OutputStreamWriter(bos, "US-ASCII"); 

     // Writing to server 
     osw.write(dataToSend); 
     osw.flush(); 

     System.out.println("> Writing to server done..."); 

     socket1Connection.close(); 

    } catch (UnknownHostException e) { 
     System.out.println(e.getLocalizedMessage()); 
     System.out.println("Unknown Host. Please check if the server is running at the IP & port"); 
     //e.printStackTrace(); 
    } catch (IOException e) { 
     System.out.println(e.getLocalizedMessage()); 
     System.out.println("Could not send data. Giving up."); 
     //e.printStackTrace(); 
    } 

    System.out.println("> End of connection..."); 
} 

}

我的目录结构为:(MyWorkspace)/myProject/com/mycompany/pdr/client 我从客户端文件夹内运行javac SimpleClientSend.java,我也得到一个类文件,没有错误。我跑java SimpleClientSend,我得到一个NoClassDefFound消息:

Exception in thread "main" java.lang.NoClassDefFoundError: SimpleClientSend (wrong name: com/iai/pdr/client/SimpleClientSend) 

我使用-cp .,当我运行java遵循所有其他文章建议在那里尝试(但什么是如果已经在我的类路径的地步? ),我已经尝试从客户端文件夹外部运行它,所有事情都给我带来了同样的错误。在eclipse中,我所要做的只是将java文件粘贴到一个空白项目中并运行。我在这里做错了什么?

+0

尝试运行从(MyWorkspace)/ myProject – vickirk 2011-12-16 15:20:42

回答

3

你需要指定你的类的全名(包括包)。

的Java com.mycompany.pdr.client.SimpleClientSend

的结构为类(ES)基本包含在类路径中是很重要的。一般 。是包含的,所以如果你运行上面的命令时,你在myProject它应该工作。

如果你是在另一个文件夹,你应该在myProject的添加到您的类路径,如:

java命令...... MyWorkspace/myProject的com.mycompany.pdr.client.SimpleClientSend

......当然,因为我不知道你的完整路径。