试用资源无法编译,而不是声明'错误

时间:2015-08-10 19:22:49

标签: java linux

我今天买了一本书,关于"并行和分布式应用程序在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");

    }

}

1 个答案:

答案 0 :(得分:2)

错误

Server.java:7: '{' expected
    try (ServerSocket serverSocket = new ServerSocket(27015)) {

表示java无法识别该类型的语句。尝试使用java 1.7中引入的资源。我怀疑您正在使用JDK 1.6或之前编译