我今天买了一本书,关于"并行和分布式应用程序在java"从2014年开始。
我运行Kali Linux 64Bit并在编译时遇到一堆错误,如下面的视图示例。总而言之,大约有17个错误。
Server.java:7: '{' expected
try (ServerSocket serverSocket = new ServerSocket(27015)) {
^
Server.java:88: not a statement
} catch(Exception e) {
Server.java:96: reached end of file while parsing
}
^
我从2014年写的这本书中得到了这个例子,所以我认为不应该有任何错误,但它不会起作用。
就我所见,try-catch块是可以的,并且在本书的例子中给出了资源的catch块。
据我所知,在Kali Linux中预装的是OpenJDK,也许这可能是错误,但我不确定。我希望它适合这类问题,有人可以为我检查代码。
import java.net.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
public class Server {
public static void main(String[] args) {
try (ServerSocket serverSocket = new ServerSocket(27015)) {
while(true) {
System.out.println("[info] Server in listen mode...");
try {
TCPSocket tcpSocket = new TCPSocket(serverSocket.accept());
new Slave(tcpSocket);
} catch(Exception e) {
//error handling
}
}
} catch(Exception e) {
// error handling
}
}
}
// Class Server Ende
class Slave extends Thread {
private TCPSocket socket;
public Slave(TCPSocket socket) {
this.socket = socket;
this.start();
}
public void run() {
try(ServerSocket s = socket) {
while(true) {
String request = s.receiveLine();
if(request != null) {
try {
int secs = Integer.parseInt(request);
Thread.sleep(secs * 1000);
} catch(InterruptedException e) {
// error handling
System.out.println(e);
}
s.sendLine(request);
} else {
break;
}
}
} catch(Exception e) {
System.out.println(e);
}
System.out.println("[info] Connection closed");
}
}
答案 0 :(得分:2)
错误
Server.java:7: '{' expected
try (ServerSocket serverSocket = new ServerSocket(27015)) {
表示java无法识别该类型的语句。尝试使用java 1.7中引入的资源。我怀疑您正在使用JDK 1.6或之前编译