Tags: apis, consideration, core, create, follows, java, javaprog, program, programto, special, unix, windows-nt
Java under UNIX v/s Windows-NT
On Java Studio » Java Core APIs
5,011 words with 8 Comments; publish: Fri, 25 Jan 2008 22:01:00 GMT; (15093.99, « »)
Is there any special consideration for a Java Program
to work under UNIX.
My problem is as follows,
I have a Java program say "JavaProg.java".
I create its class file under Windows-NT i.e.
"JavaProg.class" after compiling the java code using
the command "javac JavaProg.java".
Everythings perfect till here. The class file generates
output as expected under Windows-NT
Problem starts when I transfer that class file to UNIX.
With the initial promise of Java as "Write Once,
Run Everywhere" I just take the class file and put
it in my directory under UNIX.
i.e. home/myfiles/javacodes/programs
I set the PATH as "/home/java/bin" & CLASSPATH variable
as "/home/java/lib" since these are the directories where
the java.exe executable and the library files are existing.
Then when I execute
"java JavaProg" from my homedirectory of home/myfiles/javacodes
/programs it gives the following error,
Can't find the class file JavaProg
So I try out various other options like
"java JavaProg.class" (Specifying the .class extension)
on which it says
Invalid class name JavaProg.class
So I try,
"java /home/myfiles/javacodes/programs/JavaProg.class"
on which it says
Error finding class JavaProg.class : Wrong Name
=======================================================
Under Windows-NT I just have to do the following 4 steps,
1. set PATH=.;c:\jdk1.1.8\bin
2. set CLASSPATH=.;c:\jdk1.1.8\lib
3. Run the following command,
"javac JavaProg.java"
4. Run the following command,
"java JavaProg"
=======================================================
My Questions,
1. Are there any special considerations when class files
are placed under UNIX.
2. Does the above for Windows-NT apply exactly the same manner
in UNIX too. Or is there some additional thing to be done.
3. Are there any environment variables to be set under UNIX
which I might be missing.
4. How do you set PATH & CLASSPATH in UNIX.
5. Does the Java code have to be recompiled under UNIX.
I personally feel "NO" since Java promises "Write Once,
Run Everywhere" theme. So the same class file should even
work under UNIX even though it was intially compiled using
Windows-NT.
Can someone please respond as early as possible as I am
close to the project deadline. Any help appreciated. Thanks
in advance to any help, insights, views, ideas anyone can
throw on this subject.
Thanks,
Jatin
http://java-apis.developerfaqs.com/q_java-core-apis_28574.html
All Comments
Leave a comment...
- 8 Comments

You don't need to recompile for Unix. You cannot specify the .class extension.
Put the JavaProg in a directory (ie /your/directory). From /your/directory, run java as follows:
java -cp . JavaProg
the "-cp ." specifies that the CLASSPATH should be from the current directory. Don't confuse "CLASSPATH" with the Unix "PATH" variable.
Btw, you do have to consider things like security issues when bringing Java applications to Unix. I don't think Unix, in general, will allow you to open sockets without configuring the JVM in some way.
#1; Fri, 29 Jun 2007 02:16:00 GMT

Btw, you don't need to worry about the "PATH" unix variable, since it looks like java is indeed running (ie your PATH variable currently has the java executable in it) it's just not finding the class file. Setting the "PATH" unix variable is different for every shell type.
For C-Shell:
setenv PATH $PATH:/another/path
For K-Shell:
export PATH=$PATH:/another/path
(or something like that)
#2; Fri, 29 Jun 2007 02:16:00 GMT

- As in the crosspost (to the JVM forum) your classpath is wrong. #3; Fri, 29 Jun 2007 02:16:00 GMT

I'm still learning java programming on a Linux box. I think the only problem is CLASSPATH(of course you have to have same JVM on both platforms). As long as you set the right value, there should be no other things to do to run a class file on UNIX platform., which is compiled within other OSs.
As for the socket, I can't see any problem with opening one. Can you explain more? Thank you.
Liheng
#4; Fri, 29 Jun 2007 02:16:00 GMT

- My Unix JVM threw SecurityExceptions at me. Basically, it comes down to starting the JVM with a policy file that specifies permissions. Check out the SocketPermission class. #5; Fri, 29 Jun 2007 02:16:00 GMT

- Would there be a considerable change that needs to be done when porting server-side applications such as sockets-EJB-servlets from WinNt to Unix? If for example, the application will be developed under WinNT-WebLogic Server 6.1 and be deployed on Unix-Weblogic Server 6.1? #6; Fri, 29 Jun 2007 02:16:00 GMT

- And also what would be the precautions to look out for in when writing the code? Any other information is appreciated. Thanks. #7; Fri, 29 Jun 2007 02:16:00 GMT

- What about using SWING in Unix? How do you run your java applications that extend JFrame? Can it run on Unix? #8; Fri, 29 Jun 2007 02:16:00 GMT