我有一个Java应用程序,需要在Windows和MacOS上工作,它是在Netbeans 8.2中使用JDK8开发的。
这个应用程序需要打开一个WebSocket,但我在MacOS中得到“操作不允许”异常,在Windows中它工作正常。
我已经使用'org.java_websocket.server.WebSocketServer'类实现了WebSocket服务器。
堆栈跟踪如下所示:
Operation not permitted
java.net.SocketException: Operation not permitted
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:67)
at org.java_websocket.server.WebSocketServer.run(WebSocketServer.java:325)
at java.lang.Thread.run(Thread.java:748)
我一直在阅读可能的解决方案,但很少。一个可能的解决方案,从XCode的帖子,可以添加一个权利文件到应用程序,以获得访问网络的权利,但我不知道如何在Java项目中使用Netbeans,我没有找到任何有关它的文档。
编辑1
我认为问题在于应用程序是使用Process.Run方法从另一个应用程序启动的。如果我直接启动它,它会正确地打开WebSocket。
1条答案
按热度按时间64jmpszr1#
也许你可以尝试从启动Java进程的应用程序中启用传入连接和传出连接。在XCode项目中,您必须转到项目设置〉签名和功能〉应用沙盒并启用网络检查。
希望能帮上忙。