我正在尝试使用以下代码从静态方法获取资源(image.png,与此代码在同一个包中):
import java.net.*;
public class StaticResource {
public static void main(String[] args) {
URL u = StaticResource.class.getClass().getResource("image.png");
System.out.println(u);
}
}
Run Code Online (Sandbox Code Playgroud)
输出只是'null'
我也尝试了StaticResource.class.getClass().getClassLoader().getResource("image.png");
,它抛出一个NullPointerException
我见过其他有效的解决方案,我做错了什么?
我在Java套接字方面遇到了一些麻烦.我有一对应用程序在它们之间建立连接(一个打开a ServerSocket,调用accept()和等待,另一个通过Socket(InetAddress,int)构造函数连接.
建立套接字连接后,使用Thread它创建a Runnable.
public void run() {
System.out.print("Watching Socket for closing ");
while(running) {
if(socket.isClosed()) {
System.out.println("Socket has been closed");
break;
}
}
this.running = false;
//safely ends this application by closing i/o and exiting.
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当其中一个应用程序意外关闭时(在我的情况下从Eclipse终止)调用Socket.isClosed()仍显示套接字已打开,因此循环保持运行,就好像Socket已打开一样.
当另一侧的Java应用程序被强制结束时,如何检测Socket何时关闭?