java源程序在eclipse里直接運行的話沒有問題,但是在控制台時出現了錯誤。
1. 編譯
編譯沒有出錯,.class文件也正確顯示的。
2. 運行
出錯了,首先,我的環境是配置好的,也就是javac xxx.java,和java xxx之前是可以正常編譯和運行的。那么這兒是什么問題呢?
3. 原因
因為我的源碼里有引入了一個包socket,socket就是我這個源碼Server.java所在的包。這兒運行報錯的原因就是引入這個包導致的。
package socket; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String[] args) { try { //服務端打開端口8888 ServerSocket port = new ServerSocket(8888); //設置監聽 System.out.println("監聽端口號:" + port); Socket s = port.accept(); System.out.println("有連接過來" + s); port.close(); s.close(); } catch (IOException e) { e.printStackTrace(); } } }
4. 解決辦法
方法一
因為這個文件就在這個包下,所以其實不用引入這句話也是可以編譯運行的。但是你會發現在IDE里會提示出錯,而且也並不推薦這種做法。
方法二
編譯和運行的命令稍微改一下
編譯
javac socket\Server.java
即從包名目錄開始一直到源碼文件
可以看到,編譯正常
運行
java socket.Server
即包名.一直到字節碼文件,也就是.class文件。注意這兒不是java socket\Server,而是用"."