Sorry I included the wrong stack trace. It should have been:
java.net.SocketException: Invalid argument or cannot assign requested
address
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
at
java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
at java.net.Socket.connect(Socket.java:452)
at java.net.Socket.connect(Socket.java:402)
at java.net.Socket.<init>(Socket.java:309)
at java.net.Socket.<init>(Socket.java:153)
at SocketTest.main(SocketTest.java:18)
Brian G. Anderson wrote:
I have installed suns java 1.4.2_08 and 1.5.0_7 using jpackage. I
have been using the alternatives command to switch between them. In
using 1.4.2 I have run across the following problem where a java
program cannot bind to a socket. I have attached the following simple
test class to show what is going on.
1. compile this class using javac1.4
2. if you execute it using java 1.4 you will get the following
exception :
Exception in thread "main" java.lang.UnsupportedClassVersionError:
SocketTest (Unsupported major.minor version 49.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
3. If you execute it using the java 1.5 jvm the program will
successfully print the first few bytes of the ssh intro message it
prints on port 22 upon first connection.
Its very strange because most everything else about Java seems to
work: IO, swing, etc. In fact the first time I saw this problem
(though I didn't realize it at the time) was when I ran LimeWire under
java 1.4: the UI comes up and everything seems to work, but it never
seems to connect to the network. After realizing what the problem
might be I restarted LimeWire under 1.5 and it connects fine.
So 1.4.2 has some problem with binding to sockets. Now one might just
advise me to use 1.5, but I have a large set of programs that only
compile under 1.4 (syntax changes due to enum). The '-source='
argument to javac also doesn't work for me. My current solution is to
have the java_sdk alternative set to 1.4 and the java alternative to
1.5, but this is very awkward.
My questions to the community are:
1. are others seeing this behavior with 1.4.2?
2. any idea on how to fix it?
3. any better solution on how to mix a 1.4.2 compiler with a 1.5 JVM
Thanks,
Brian