"BindException: Address already in use" after an application is quited - java

I am learning to code microservices in VertX on my new MacBook, and here is the issue:
I wrote some code, which builds http server at localhost, port 8080, and named it MyMicroservice.
I ran it (succesfully) with command java -jar MyMicroservice.
I quit it using ctrl+z.
I try to run it again, in the same way - and I get:
[INFO] SEVERE: java.net.BindException: Address already in use
How to avoid it? I can handle it with restarting my computer, but I believe there are is some faster approach?

On Windows, to find and kill the process that is listening to a specified port (often 8080)
Open the Command Prompt as Administrator
netstat -anbo | findstr "8080"
Note: must use double quotes
The last field in the response line is the process id (pid).
Stop the process with
taskkill /F /PID pid

Thanks Daniu and NickAth, as you said the problem was wrong command - ctrl+z just suspended the process, and ctrl+c kills it, what works here fine.

Related

Server-Socket to Socket Communication [duplicate]

In Eclipse, I got this error:
run:
[java] Error creating the server socket.
[java] Oct 04, 2012 5:31:38 PM cascadas.ace.AceFactory bootstrap
[java] SEVERE: Failed to create world : java.net.BindException: Address already in use: JVM_Bind
[java] Java Result: -1
BUILD SUCCESSFUL
Total time: 10 seconds
I'm not sure why it came up now, but it ran fine just a few hours ago. Do I need to restart my machine? How do i get to the bottom of it? I appreciate any tips or advice.
If you know what port the process is running you can type:
lsof -i:<port>.
For instance, lsof -i:8080, to list the process (pid) running on port 8080.
Then kill the process with kill <pid>
Yes you have another process bound to the same port.
TCPView (Windows only) from Windows Sysinternals is my favorite app whenever I have a JVM_BIND error. It shows which processes are listening on which port. It also provides a convenient context menu to either kill the process or close the connection that is getting in the way.
In windows
netstat -ano
will list all the protocols, ports and processes listening .
Use
taskkill -pid "proces to kill" /f
to kill the process listening to the port.
e.g
taskkill -pid 431 /f
In Ubuntu/Unix we can resolve this problem in 2 steps as described below.
Type netstat -plten |grep java
This will give an output similar to:
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1001 76084 9488/java
Here 8080 is the port number at which the java process is listening and 9488 is its process id (pid).
In order to free the occupied port, we have to kill this process using the kill command.
kill -9 9488
9488 is the process id from earlier. We use -9 to force stop the process.
Your port should now be free and you can restart the server.
In Mac:
Kill process
Terminal: kill <pid>
Find pid:
Terminal: lsof -i:<port>
From Diego Pino answer
(Windows Only)
To kill a process you first need to find the Process Id (pid)
By running the command :
netstat -ano | findstr :yourPortNumber
You will get your Process Id (PID), Now to kill the same process run this command:
taskkill /pid yourid /f
For windows :
Find the process id
netstat -nao | find "8080"
It will show you the process ID as a number.
Example:
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 18856
Here 18856 is the process ID
Kill that process
taskkill /PID 18856 /F
Output : SUCCESS: The process with PID 18856 has been terminated.
Here using taskkill you are killing the process ID:18856
For linux/Mac:
sudo kill -9 $(sudo lsof -t -i:8080)
Here you find the process by port 8080 using sudo lsof -t -i:8080 and killing it by sudo kill command
You have another process running on the same port.
You could try killing one of the java.exe services running in your task manager - ps make sure you dont kill eclipse since that is listed as java.exe as well. If nothing else works, restarting your machine will fix it anyhow. It looks like youre not shutting down a socket from a previous test. Hope this helps.
For those who are looking for the simplest of the answers (as that is what we usually miss), just stop your running project and start it again.
Most of the time what we do is we forget to stop the project we ran earlier and when we re-run the project it shows such an issue.
I am also attaching a photo to make it clearer (I use 'Spring tool suite').
So what you need to do is either click the button on the extreme right, if you want to relaunch the same project or first click on the button which is 2nd from the right to stop your project and then the button on the extreme left to run your project. I hope this will solve the issue of few of the newer programmers. :)
In Windows CMD line, find out the Process ID that hold a connection on the bind port by entering following command:
C:> netstat -a -o
-a show all connections
-o show process identifier
And then Terminate the process.
You need to close your port
if you are a linux user then type
fuser -k 8080/tcp
This BindException would come when another process is already running in the specified port(8080).
You can use anyone of the following approach.
Change the server port: If you are using Tomcat server and IntelliJ IDE, you can configure the server port by configuring the tomcat server
or
Go to tomcat>conf folder
Edit server.xml
Search "Connector port"
Replace "8080" by your port number
Restart tomcat server.
Kill the existing running process in that port and start the server.
For Linux/Mac
sudo kill -9 $(sudo lsof -t -i:8080)
For Windows
netstat -ano | findstr :8080
taskkill /PID typeyourPIDhere /F
Note: (/F forcefully terminates the process)
Yes, as Guido Simone said it because another process listening to the same port.If you are in Ubuntu You can simply kill that process giving command
sudo kill $(sudo lsof -t -i:[port number])
ex: sudo kill $(sudo lsof -t -i:8080)
But once it didn't work for me.
i gave the command
$ lsof -i:[port]
and it shows nothing.
I checked my docker containers using command
docker ps -a but non of them alive.All containers has stopped
(but i remember ,i stopped one container which was used same port few minutes ago.).To make sure that docker is not the reason,I stop whole docker process using command sudo service docker stop and try again.
Surprisingly eclipse didn't show the error at that time .It run my program perfectly.
Hope my experience will help some one.
The port is already being used by some other process as #Diego Pino said u can use lsof on unix to locate the process and kill the respective one, if you are on windows use netstat -ano to get all the pids of the process and the ports that everyone acquires. search for your intended port and kill.
to be very easy just restart your machine , if thats possible :)
Restart the PC once, I think it will work. It started working in my case. One more thing can be done go to Task Manager and End the process.
In my case Tomcat was running in a background. I've installed it as a external servlet while using Eclipse.
With a Spring Boot in Intellij it has it own server but cannot start while it's already occupied.
In my case Tomcat starts automatically I turn on my OS, that is why I need to shut down him manualy:
$ sudo service tomcat stop
of course "tomcat" depends what version of tomcat you are using.
Hope it might help to someone.
I faced similar issue in Eclipse when two consoles were opened when I started the Server program first and then the Client program. I used to stop the program in the single console thinking that it had closed the server, but it had only closed the client and not the server. I found running Java processes in my Task manager. This problem was solved by closing both Server and Client programs from their individual consoles(Eclipse shows console of latest active program). So when I started the Server program again, the port was again open to be captured.
Your port must be busy in some Other Process. So you can download TCPView on https://technet.microsoft.com/en-us/sysinternals/bb897437 and kill the process for used port.
If you don't know your port, double click on the server that is not starting and click on Open Server Properties Page and click on glassfish from left column. You will find the ports here.
(1) check the port is in use or not, kill that process
$ lsof -i:[port]
(2) another reason is the port is used by ipv6, solution:
edit /etc/sysctl.conf
add this to the file
net.ipv6.conf.all.disable_ipv6 = 1
then make it effect
$ sudo sysctl -p /etc/sysctl.conf
or just reboot
It means some other process is already using the port. In case if this port is being used by some other critical applications and you don't want to close that application, the better way is to choose any other port which is free to use.
Configure your application to use any other port which is free and you will see your application working.
You can close every Java Process and start again your app:
taskkill /F /IM java.exe
start your app again...
I actually just used the Terminate button in Console Tab. It's a small red box. Hope that hepls.

8080 port already taken issue when trying to redeploy project from Spring Tool Suite IDE

I have strange thing when I try to modify Spring project inside my Spring Tool Suite. On the first load (deploy) everything is fine, application compiles and runs on localhost:8080
When I change something inside code and try to redeploy it (Run it again - Run As Spring Boot App) I get error message
*************************** APPLICATION FAILED TO START
Description:
The Tomcat connector configured to listen on port 8080 failed to
start. The port may already be in use or the connector may be
misconfigured.
Action:
Verify the connector's configuration, identify and stop any process
that's listening on port 8080, or configure this application to listen
on another port.
2016-10-19 00:01:22.615 INFO 10988 --- [ main]
ationConfigEmbeddedWebApplicationContext : Closing
org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext#3023df74:
startup date [Wed Oct 19 00:01:19 CEST 2016]; root of context
hierarchy 2016-10-19 00:01:22.616 INFO 10988 --- [ main]
o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed
beans on shutdown
If I shutdown process on that port manually everything works fine again, but this can't be right way of redeploying Spring app. Am I doing something wrong here?
I'm using :: Spring Boot :: (v1.4.1.RELEASE)
P.S. I'm aware that I can setup some kind of hot-swap mechanism to have automatic reload of page after I change code, but for now I would like to resolve this issue first.
Thanks for any kind of help or info.
It sometimes happen even when we stop running processes in IDE with help of Red button , we continue to get same error.
It was resolved with following steps,
Check what processes are running at available ports
netstat -ao |find /i "listening"
We get following
TCP 0.0.0.0:7981 machinename:0 LISTENING 2428 TCP 0.0.0.0:7982 machinename:0 LISTENING 2428 TCP 0.0.0.0:8080 machinename:0 LISTENING 12704 TCP 0.0.0.0:8500 machinename:0 LISTENING 2428
i.e. Port Numbers and what Process Id they are listening to
Stop process running at your port number(In this case it is 8080 & Process Id is 12704)
Taskkill /F /IM 12704 (Note: Mention correct Process Id)
For more information follow these links Link1 and Link2.
For Mac users(OS X El Capitan):
You need to kill the port that localhost:8080 is running on.
To do this, you need to do two commands in the terminal :N
sudo lsof -i tcp:8080
kill -15 PID
NB! PID IS A NUMBER PROVIDED BY THE FIRST COMMAND.
The first command gives you the PID for the localhost:8080.
Replace the PID in the second command with the PID that the first command gives you to kill the process running on localhost:8080.
You have to stop the current process and run your new one. In Eclipse, you can press this button to ReLaunch your application:
The reason is one servlet container is already running on port 8080 and you are trying to run another one on port 8080.
Check what processes are running at available ports.
For Windows :
netstat -ao |find /i "listening"
OR
netstat -ano | find "8080" (Note: 8080 is port fail to start)
Now try to reLaunch or stop your application.
To relaunch: you can press this button
To stop in windows:
Taskkill /F /IM 6592
Note: Mention correct Process Id
right click on the console and select terminate/disconnect all
Go to Task Manager and end Java(tm) platform se binary
What is java(tm) platform se binary(Search in google
Another option is :
Go to application.properties file set server.port=0. This will cause Spring Boot to use a random free port every time it starts.
In my case, the error occurred as the application was unable to access the keystore for ssl.
Starting the application as root user fixed the issue.
Create application.properties file under src/main/resources folder and write content as
server.port=8084
Its runs fine.
But every time before run need to stop application first by click on red button upper on the IDE
or try
RightClick on console>click terminate/Disconnect All
If you got any error on your console by saying, “Embedded servlet container failed to start. Port 8080 was already in use.” Then go to application.properties file and add this property “server.port = 8090”.
Actually the default port for spring boot is 8080, if you have something else on that port, the above error will occur. So we are asking spring boot to run on other port by adding “server.port = 8090” in application.properties file.
This is a typical startup failure due to the embedded servlet container’s port being in use.
Your embedded tomcat container failed to start because Port 8080 was already in use.
Just Identify and stop the process that's listening on port 8080 or configure (in you application.properties file )this application to listen on another port.
SOLUTION 1
As a solution ,You can change the default port in application.properties by adding this.
server.port = 8090
SOLUTION 2
If the above solution is not working use this solution.
Here we kill the process which used that port using command prompt.
In my case,
Port =8090,
PID =22208
1). (This use to find PID)
netstat -ano | findstr :8090
2). (Kill that proccess)
taskkill /PID 22208 /F
Good Luck !
There are two ways to resolve this issue.Try option 1 first, if it doesn't work try option 2, and your problem is solved.
1) On the top right corner of your console, there is a red button, to stop the spring boot application which is already running on this port just click on the red button to terminate.
2) If the red button is not activated you need to right click on the console and select terminate/disconnect all. Hope this helps.
Bonus tip:- If you want to run your server on a different port of your choice, create a file named application.properties in resource folder of your maven project and write server.port=3000 to run your application on port 3000
Am I doing something wrong here?
Yes, you are. One servlet container is already running on port 8080 and you are trying to run another one on port 8080 again.
Either restart the server (If there is button for that in STS) or stop and start it
On Linux Machine, save the bash script and execute it. If you want to free port 8080, Input 8080 when prompted
echo "Enter port number to be closed :: "
read port
sudo kill $(sudo lsof -t -i:$port)
Just click red button to stop all services on eclipse than re- run application as Spring Boot Application - This worked for me.
Open "localhost:8080" on your browser and see what is running on this port.
I did it and I just found Oracle 10g XE running on background, so I went to start->Services and stopped all oracle services. Then I redo mvnw spring-boot:run on IntelliJ and it runs like magic.
hi creating a simple line in application.properties as SERVER_PORT=8090 solved the issue.
If you are using linux system, use the below command.
fuser -k some_port_number/tcp - that will kill that process.
Sample:-
fuser -k 8080/tcp
Second Option: Configure the tomcat to use a new port
first running from CMD :
netstat -aon |find /i "listening" |find "8080"
then get PID number and run following command:
let it 199,
taskkill /F /PID 199
In Spring Boot Application (Using Spring Starter Project) We Have Update Port in Server.xml using Tomcat server and Add this port in application.property( insrc/main/resources)
the code is
server.port=8085
And update Maven Project then run application
There are some processes left in the background on that port, several reasons can cause this problem, but you can solve easily if you end process which is related to 8080 or Spring.
If you are using Linux there is steps how to end process:
Open terminal and type command "htop"
press key F3(it will allow you to search)
Type "8080" if there was no result on 8080 after that try "spring"
Then Press F9(KILL) And press "9"(SIGKILL)
this will kill process which is left on 8080 port and let you run application.
Print the list of running processes and try to find the one that says spring in it. Once you find the appropriate process ID (PID), stop the given process.
ps aux | grep spring
kill -9 INSERT_PID_HERE
After that, try and run the application again. If you killed the correct process your port should be freed up and you can start the server again.
No Need to manually start an application every time at time of development to implements changes use 'spring-boot-devtool' maven dependency.
Automatic Restart :
To use the module you simply need to add it as a dependency in your Maven POM:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
When you have the spring-boot-devtools module included, any classpath file changes will automatically trigger an application restart. We do some tricks to try and keep restarts fast, so for many microservice style applications this technique might be good enough.
Goto Window->Preferences, search for Launching.
Select the "Terminate and Relaunch while launching" option.
Press Apply.
You can use list open file command and then kill the process like below.
sudo lsof -t -i tcp:8181 | xargs kill -9
or
sudo lsof -i tcp:8181
kill -9 PID
One simple solution for me that worked was to :
- Restart the IDE, since the stop Button was no longer visible.
One line command for MAC users:
kill `lsof -i -n -P | grep TCP | grep 8080 | tr -s " " "\n" | sed -n 2p`
If you are facing problem while redeploying, the easiest way would be to not leave port occupied. i.e. close the context of your spring application, so that PORT gets closed alongside.
You can do that in these ways:
//open context.
ConfigurableApplicationContext appContext = SpringApplication.run(Application.class, args);
...
//in the end, close it
appContext.close();
Another way would be, to: open context in try() block
try(ConfigurableApplicationContext appContext =
SpringApplication.run(Application.class, args))
{
// your code here
}
try() will take care of closing the context, therefore the PORT, even if code breaks somewhere, by
calling AutoCloseable.
ref: try-with-resources
If someone accidentally stumble on this post and his problem is that application is starting two times instead of once and it obviosly fails because port is already in use by first instantion of application. Try add these parameters in yml / properties file.
spring.devtools.restart.quiet-period: 2000
spring.devtools.restart.poll-interval: 3000
https://github.com/spring-projects/spring-boot/issues/25269
https://github.com/spring-projects/spring-boot/issues/12760
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using.devtools.globalsettings.configuring-file-system-watcher
# If you are on windows os (1st way)
open task bar
right click on running JDK binary process
after right click then click on end task
# If you are on windows os (2nd way)
pres win+r -> press enter (open windows command permot)
Taskkill /F /IM <PID>
YOU CAN CHANGE THE PORT NUMBER ALSO, TRYING THAT METHOD WILL CHANGE THE ERROR OF PORT 8080
For Spring Boot 2 and later version add the property to your application configuration file(application.properties or application.yaml):
spring.main.web-application-type=WebApplicationType
The WebApplicationType can be one of:
NONE - The application should not run as a web application and should
not start an embedded web server.
REACTIVE - The application should run as a reactive web application and should start an embedded reactive web server.
SERVLET - The application should run as a servlet-based web application and should start an embedded servlet web server.

Jboss Server Error:Server already running on localhost

I am working on web project where jboss application server is required. After configured the jboss server, I was running my application. It is showing error like:Server already running on local host.Web found a running server at URL //localhost:8080.
Works for me
Open Command Prompt
Type netstat -noa and hit Enter
Check the "PID" of process that uses your port
And type taskkill /PID "PID number" and hit Enter
As #Mxsky stated: You may have to force the processus to quit with the /F option.So the command becomes: taskkill /PID pid_number /F
Done. Now start the server
Generally this issue happen because of proxy setting. If none of the process running on 8080 port and still you find this error then reason is proxy server is not bypass for local address.
Bypass Proxy Server for Local Address by below Setting on IE.
Open IE, Tools -> Internet Options -> Connections -> LAN Setting -> Check mark on checkbox "Bypass proxy server for local address"
Now restart your jboss server.
If this happened from not closing eclipse properly (or it just crashed):
When it is closed, 'End Process Tree' on javaw.exe with task manager.
Restart eclipse.
This is not likely the best way but it works... or did for me at least.
If this is from another server running:
You need to make sure you have separate port numbers per server instance.
Otherwise it will not bind correctly; or at all.
What Süleyman Şahin said was right.
Open Command Prompt
Type netstat -noa and hit Enter
Check the "PID" of process that uses your port
And type taskkill /PID "PID number" and hit Enter
As #Mxsky stated: You may have to force the processus to quit with the /F option.So the command becomes: taskkill /PID pid_number /F
However, if you are unable to kill the process in the cmd, check for the PID that is using port 8080. In the command prompt, [::]8080 it will look like this.
Now, goto the Task Manager in the Details tab check for the PID and right click on the name of the service and click Go to service(s). Now stop that service that is using port 8080.
Now, open the eclipse and start the JBoss. That's it.
I solved this problem, by changing the port number in my server and then changing the port number in standalone-full.xml too.
This issue appear something due to bad configuration. You have made some change in the standalone.xml file and the server doesn't start again. You can check that by try to launch the server from cmd. if it's so, just check you config. otherwise try the approach of #ECleveland
Worked for me after opening cmd in Administrator mode:
First open the cmd in administrator mode.
Find the PID number for port 8080 by using this command:
netstat -ano | findstr :8080
Output will like:
TCP 127.0.0.1:8080 0.0.0.0:0 LISTENING 3951
Kill the PID (pidnumber is 3951 from above output. Your pidnumber is different)
taskkill/pid pidnumber
Output will like:
ERROR: The process with PID 3952 could not be terminated.
Reason: This process can only be terminated forcefully (with /F option)
If it shows ERROR then use below command:
taskkill/pid pidnumber /F
Output: SUCCESS: The process with PID 3952 has been terminated.
Example: Image Contains the above steps with example

How do I resolve the "java.net.BindException: Address already in use: JVM_Bind" error?

In Eclipse, I got this error:
run:
[java] Error creating the server socket.
[java] Oct 04, 2012 5:31:38 PM cascadas.ace.AceFactory bootstrap
[java] SEVERE: Failed to create world : java.net.BindException: Address already in use: JVM_Bind
[java] Java Result: -1
BUILD SUCCESSFUL
Total time: 10 seconds
I'm not sure why it came up now, but it ran fine just a few hours ago. Do I need to restart my machine? How do i get to the bottom of it? I appreciate any tips or advice.
If you know what port the process is running you can type:
lsof -i:<port>.
For instance, lsof -i:8080, to list the process (pid) running on port 8080.
Then kill the process with kill <pid>
Yes you have another process bound to the same port.
TCPView (Windows only) from Windows Sysinternals is my favorite app whenever I have a JVM_BIND error. It shows which processes are listening on which port. It also provides a convenient context menu to either kill the process or close the connection that is getting in the way.
In windows
netstat -ano
will list all the protocols, ports and processes listening .
Use
taskkill -pid "proces to kill" /f
to kill the process listening to the port.
e.g
taskkill -pid 431 /f
In Ubuntu/Unix we can resolve this problem in 2 steps as described below.
Type netstat -plten |grep java
This will give an output similar to:
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1001 76084 9488/java
Here 8080 is the port number at which the java process is listening and 9488 is its process id (pid).
In order to free the occupied port, we have to kill this process using the kill command.
kill -9 9488
9488 is the process id from earlier. We use -9 to force stop the process.
Your port should now be free and you can restart the server.
In Mac:
Kill process
Terminal: kill <pid>
Find pid:
Terminal: lsof -i:<port>
From Diego Pino answer
(Windows Only)
To kill a process you first need to find the Process Id (pid)
By running the command :
netstat -ano | findstr :yourPortNumber
You will get your Process Id (PID), Now to kill the same process run this command:
taskkill /pid yourid /f
For windows :
Find the process id
netstat -nao | find "8080"
It will show you the process ID as a number.
Example:
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 18856
Here 18856 is the process ID
Kill that process
taskkill /PID 18856 /F
Output : SUCCESS: The process with PID 18856 has been terminated.
Here using taskkill you are killing the process ID:18856
For linux/Mac:
sudo kill -9 $(sudo lsof -t -i:8080)
Here you find the process by port 8080 using sudo lsof -t -i:8080 and killing it by sudo kill command
You have another process running on the same port.
You could try killing one of the java.exe services running in your task manager - ps make sure you dont kill eclipse since that is listed as java.exe as well. If nothing else works, restarting your machine will fix it anyhow. It looks like youre not shutting down a socket from a previous test. Hope this helps.
For those who are looking for the simplest of the answers (as that is what we usually miss), just stop your running project and start it again.
Most of the time what we do is we forget to stop the project we ran earlier and when we re-run the project it shows such an issue.
I am also attaching a photo to make it clearer (I use 'Spring tool suite').
So what you need to do is either click the button on the extreme right, if you want to relaunch the same project or first click on the button which is 2nd from the right to stop your project and then the button on the extreme left to run your project. I hope this will solve the issue of few of the newer programmers. :)
In Windows CMD line, find out the Process ID that hold a connection on the bind port by entering following command:
C:> netstat -a -o
-a show all connections
-o show process identifier
And then Terminate the process.
You need to close your port
if you are a linux user then type
fuser -k 8080/tcp
This BindException would come when another process is already running in the specified port(8080).
You can use anyone of the following approach.
Change the server port: If you are using Tomcat server and IntelliJ IDE, you can configure the server port by configuring the tomcat server
or
Go to tomcat>conf folder
Edit server.xml
Search "Connector port"
Replace "8080" by your port number
Restart tomcat server.
Kill the existing running process in that port and start the server.
For Linux/Mac
sudo kill -9 $(sudo lsof -t -i:8080)
For Windows
netstat -ano | findstr :8080
taskkill /PID typeyourPIDhere /F
Note: (/F forcefully terminates the process)
Yes, as Guido Simone said it because another process listening to the same port.If you are in Ubuntu You can simply kill that process giving command
sudo kill $(sudo lsof -t -i:[port number])
ex: sudo kill $(sudo lsof -t -i:8080)
But once it didn't work for me.
i gave the command
$ lsof -i:[port]
and it shows nothing.
I checked my docker containers using command
docker ps -a but non of them alive.All containers has stopped
(but i remember ,i stopped one container which was used same port few minutes ago.).To make sure that docker is not the reason,I stop whole docker process using command sudo service docker stop and try again.
Surprisingly eclipse didn't show the error at that time .It run my program perfectly.
Hope my experience will help some one.
The port is already being used by some other process as #Diego Pino said u can use lsof on unix to locate the process and kill the respective one, if you are on windows use netstat -ano to get all the pids of the process and the ports that everyone acquires. search for your intended port and kill.
to be very easy just restart your machine , if thats possible :)
Restart the PC once, I think it will work. It started working in my case. One more thing can be done go to Task Manager and End the process.
In my case Tomcat was running in a background. I've installed it as a external servlet while using Eclipse.
With a Spring Boot in Intellij it has it own server but cannot start while it's already occupied.
In my case Tomcat starts automatically I turn on my OS, that is why I need to shut down him manualy:
$ sudo service tomcat stop
of course "tomcat" depends what version of tomcat you are using.
Hope it might help to someone.
I faced similar issue in Eclipse when two consoles were opened when I started the Server program first and then the Client program. I used to stop the program in the single console thinking that it had closed the server, but it had only closed the client and not the server. I found running Java processes in my Task manager. This problem was solved by closing both Server and Client programs from their individual consoles(Eclipse shows console of latest active program). So when I started the Server program again, the port was again open to be captured.
Your port must be busy in some Other Process. So you can download TCPView on https://technet.microsoft.com/en-us/sysinternals/bb897437 and kill the process for used port.
If you don't know your port, double click on the server that is not starting and click on Open Server Properties Page and click on glassfish from left column. You will find the ports here.
(1) check the port is in use or not, kill that process
$ lsof -i:[port]
(2) another reason is the port is used by ipv6, solution:
edit /etc/sysctl.conf
add this to the file
net.ipv6.conf.all.disable_ipv6 = 1
then make it effect
$ sudo sysctl -p /etc/sysctl.conf
or just reboot
It means some other process is already using the port. In case if this port is being used by some other critical applications and you don't want to close that application, the better way is to choose any other port which is free to use.
Configure your application to use any other port which is free and you will see your application working.
You can close every Java Process and start again your app:
taskkill /F /IM java.exe
start your app again...
I actually just used the Terminate button in Console Tab. It's a small red box. Hope that hepls.

Error Shutting down JBOSS

I am running JBOSS on Solaris10 and trying to shutdown and restart the JBOSS. When I restart the JBOSS I am getting the following error.
LifecycleException: Protocol handler initialization failed: java.net.BindException: Address already in use:33409
I got this problem before and used to kill the process id related to the port 33409 using the lsof command. Unfortunately the lsof command is not working in my solaris box. Is there any other command I can use to identify the process id related to the port number 33409 and kill that process id, so that I can restart the JBOSS without any port conflicts.
Thanks in Advance
Use <JAVA_HOME>/bin/jps -lvm to see all java processes with their main class and all its arguments and JVM arguments.
jps -lvm | grep 'org.jboss.Main' -- this is how I usually find PIDs of any running jboss processes.
You can identify the correct process with something like this:
$ ps -feA | grep "jboss"
It takes a bit of guesswork, but you´ll get the hang of it. Make sure you identify the correct process before killing it, though.

Categories