I have run the same command under windows using the windows Java Development Kit and it worked.Now i try to run it ubuntu and i get this error.Please help
Different OS have different dist package manager, you try to install Java environment in your Linux system by below Reference
It looks like you are specifying the -cp argument incorrectly.
On Linux, the path separator character is ":" not ";". The ";" character separates commands on the command line, assuming that you are using bash or similar as your shell.
It looks like your command has been interpreted as two commands:
$ javac -g -cp ../dist_windows_x86_64/something
$ . GPUGalaxySim.java
The javac command fails because there are no source filenames on that command line ... just like the error message says.
Then the second command:
The dot command (".") is a built-in shell command that "sources" a file and attempts to interpret it as shell commands.
If you attempt to "source" a file that is actually Java source code, you get nonsense error messages, basically because the shell has no clue what Java code means.
Related
I downloaded SymmetricDS, a tool for Database replication and tried to run it on my Windows7 machine. The program can be launched from command line and it works with Windows Terminal. However I always prefer Git Bash for command line stuff. When I run command sym though, I got error:
Error: Could not find or load main class org.jumpmind.symmetric.SymmetricLauncher
This tool is written in Java. I have JDK 1.8 installed. Git Bash inherits all environmental variables including $PATH and $JAVA_HOME from Windows. But why is it complaining about not finding the class?
The sym command is really running the following command:
exec "$SYM_JAVA" $SYM_OPTIONS -cp "$CLASSPATH" org.jumpmind.symmetric.SymmetricLauncher "$#"
All the jars are located in lib under the root directory of the application. The classpath is defined in a sym.service.conf inside conf directory:
# Java Classpath
wrapper.java.classpath.1=patches
wrapper.java.classpath.2=patches/*
wrapper.java.classpath.3=lib/*.jar
wrapper.java.classpath.4=web/WEB-INF/lib/*.jar
# Application main class and arguments
wrapper.app.parameter.1=org.jumpmind.symmetric.SymmetricLauncher
I added echo $CLASSPATH right before the exec to print out the class path and it did seem to get all of them right:
/c/Users/dnj0109/Apps/symmetric-server-3.8.29/patches:
/c/Users/dnj0109/Apps/symmetric-server-3.8.29/patches/*:
/c/Users/dnj0109/Apps/symmetric-server-3.8.29/lib/*:
/c/Users/dnj0109/Apps/symmetric-server-3.8.29/web/WEB-INF/lib/*
That could be related to this thread:
On Windows, the path separator is a semicolon (';' instead of ':').
Don't ask why. Traditionally, the semicolon is interpreted by the Bash as
the command separator, so you'll have to escape it:
$ java -cp lib/clojure-1.1.0.jar\;lib/clojure-contrib-1.1.0.jar
If you wonder why it works with PATH: MSys has special handling routines
for that.
Another reason that a java app may run in a Windows CMD shell but not in a Windows git bash shell is that the classpath used to run the app contains one of the following:
relative paths (e.g. ../foo)
network drives (e.g. //servername/bah
See:
https://github.com/git-for-windows/git/issues/1028
I run my java application on unix machine. After I input the command, it show me ">" sign. It seems I am in a interactive state with my application, but my application shouldn't interact with me. Instead, it just write something to files.
root#ip...:/mnt/test/java -cp "./" pack.foo
>
On windows machine, it just works file.
I also tried:
nohup root#ip...:/mnt/test/java -cp "./" pack.foo &
but still
On any UNIX system, the java syntax should be:
javac -cp <classpath of application> MyClass.java
java -cp <same classpath as above> MyClass
the second command should just be the name of the .class file you are attempting to run, and if everything is in the current directory, the argument for -cp should be "." without quotation marks
java -cp . MyClass
I am trying to compile some files using cygwin shell.
java file that I am trying to compile is C:\Users\Programs\x.java
For windows command prompt
C:\Users\Programs>javac x.java
No errors.
For Cygwin shell
$ javac /cygdrive/c/Users/Programs/x.java
Error:
javac: file not found: \cygdrive\c\Users\Programs\x.java
Why do I get an error in cygwin shell though it runs in windows command prompt
javac is Windows application. It has no clue about /cygdrive. Always keep it in mind and pass valid Windows paths.
So use javac 'c:/Users/Programs/x.java' or javac c\:/Users/Programs/x.java
Also, as in most Unix shells \ must be escaped if you need to use it.
I think that the problem is that "cygdrive" is a pseudo-device that is implemented in a Cygwin-specific library. If the executable you are running has not been linked against that library (and the Oracle Java executables have not!) it won't correctly resolve the "/cygdrive" path component.
I have a Java code where I am importing Guava packages. I run it in windows command prompt using following commands:
javac -cp guava-11.0.2.jar Test.java
java -cp guava-11.0.2.jar;. Test
However, in Linux it is giving error. Can anybody help me to solve this issue.
The path separator on Linux/Unix is a colon, i.e. :.
So in your case the second command on Linux/Unix would be:
java -cp guava-11.0.2.jar:. Test
class path entries are separated by colons in Linux (not semicolons as in Windows)
Try that:
java -cp guava-11.0.2.jar:. Test
In windows I can use this command:
java -cp server.jar;mysql.jar server.NithServer
But in linux it says:
-bash: server.jar: command not found
How can I add both server.jar and mysql.jar in Centos 5?
You need to use : as the path separator, instead of ;
In bash the ';' character separates shell commands when you want to put them in the same line.
This means that the string that appears after ';' and before the next space is considered a new command.
This is why, in the Unix java command, ':' is used as a separator for jars in the '-cp' option. This also happens in other Unix commands as well.
So you should write:
java -cp mysql.jar:server.jar server.NithServer
On another note, if you have these kind of difficulties again, try to call the 'man' command followed by the command you want to understand.
man java
There, you will find the answer to your question, right where the '-cp' option is described.
Enjoy.