Кажется, дубликат вопроса о том, как убить процесс, уже запущенный на этом порту, но это другой вопрос. Когда я убил процесс и перезапустил его, он все равно дает мне это сообщение об ошибке, похоже, что у Netbeans есть проблема, и сообщение об ошибке застревает и продолжает появляться даже тогда, когда порт не используется.Сообщение об ошибке не исчезает в Netbeans, почему? "java.net.BindException: уже используемый адрес: bind"
Я использовал инструмент на: http://www.yougetsignal.com/tools/open-ports/ проверить порт: 6600
Вот что он говорит:
Мой код выглядит следующим образом:
import java.io.*;
import java.util.*;
import com.sun.net.httpserver.*;
import java.net.InetSocketAddress;
import java.util.concurrent.Executors;
import Utility.*;
public class Http_Server
{
static int Port=6600,Thread_Count=50,Resume_Count=0; // 8080
InetSocketAddress addr;
HttpServer server;
static String App_Id="Resume_App";
static Resume_Loader Resume_loader;
static Get_Time Timer=new Get_Time();
static Vector<String> Current_Keywords_Vector=new Vector();
static boolean Debug_B=true;
public Http_Server(int Port)
{
if (Port>-1) this.Port=Port;
Srart_Server();
}
void Srart_Server()
{
try
{
Resume_loader=new Resume_Loader();
addr=new InetSocketAddress(Port);
server=HttpServer.create(addr,0); // Line : 34
server.createContext("/"+App_Id,new MyHandler(server));
server.setExecutor(Executors.newCachedThreadPool());
server.start();
Out("Server is listening on port : "+Port);
}
catch (Exception e)
{
Resume_App.Save_To_Log(e.toString()+"\n"+Tool_Lib_Simple.Get_Stack_Trace(e));
e.printStackTrace();
Out(e.toString());
}
}
private static void out(String message) { System.out.print(message); }
private static void Out(String message) { System.out.println(message); }
public static void main(String[] args) { Http_Server Demo=new Http_Server(-1); }
}
Вчера все было хорошо, но сегодня утром я изменил:
InetSocketAddress addr; to static InetSocketAddress addr;
HttpServer server; to static HttpServer server;
Когда я побежал, я получил следующее сообщение об ошибке:
Server is listening on port : 6600
java.net.BindException: Address already in use: bind
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:437)
at sun.nio.ch.Net.bind(Net.java:429)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at sun.net.httpserver.ServerImpl.<init>(ServerImpl.java:100)
at sun.net.httpserver.HttpServerImpl.<init>(HttpServerImpl.java:50)
at sun.net.httpserver.DefaultHttpServerProvider.createHttpServer(DefaultHttpServerProvider.java:35)
at com.sun.net.httpserver.HttpServer.create(HttpServer.java:130)
at Http_Server.Srart_Server(Http_Server.java:34)
at Http_Server.<init>(Http_Server.java:24)
at Http_Server.main(Http_Server.java:51)
Тогда я понимаю, если они статичны, они могут держать их сами в памяти и занять порт, поэтому я изменил их обратно нестатический, как приведенный выше код. Но теперь, когда я запускаю его, сообщение об ошибке продолжает появляться, а в Netbeans появляется «уведомление», говорящее что-то вроде: «package-info.class находится в неправильном месте, удаляет его или помещает в правую подкаталог ... «не помню точной формулировки. Но когда я открываю URL-адрес, веб-страница работает нормально, как будто нет сообщения об ошибке, и когда я останавливаю сервер, страница не будет отображаться так, как она должна быть.
Таким образом, кажется, что Netbeans 8.0.2 работает неправильно, но я не знаю, как сделать сообщение об ошибке не отображаемым или как оно предложило удалить «package-info.class» или поместить его в правильное sub dir, я даже не могу найти, где это, как его исправить?
_Address уже используется: bind_ может означать только одно: адрес уже используется, либо вашим текущим процессом (т.е.вы пытались привязываться к нему более одного раза) или другим. Узнайте, что и закрыли. Или ясно покажите нам в своем вопросе, что ни один другой процесс не использует этот порт, прежде чем пытаться связать его. –
@SotiriosDelimanolis: Смотрите мое добавленное изображение. – Frank
Вы уверены, что порт не открыт? Удаленное приложение не увидит все - попробуйте netstat (многие службы только прослушивают адрес loopback, поэтому не будут видеть приложение сканирования, как вы использовали). – TheFiddlerWins