Java newbie. I am trying to run a java main class from cmd line and getting back ClassNotFoundException
:
java -cp class c:\development\eclipse\workspace\Library-Manager-Server\bin\demo\rmi\librarymanager\server\LibraryManagerServer
-Djava.security.policy="C:\Development\Eclipse\Workspace\Library-Manager-Server\security.policy"
-Djava.rmi.server.codebase="file:/C:/Development/Eclipse/Workspace/Library-Manager-Server/bin/ file:/C:/Development/Eclipse/Workspace/Library-Manager-Common/bin/"
The class is definitely there in the bin (where eclipse drops it) but for some reason (probably trivial) it cannot be found when I run the cmd line above.
Any help appreciated!
EDIT#1 : as some of you may have guessed classname is demo.rmi.librarymanager.server.LibraryManagerServer
EDIT#2 : OK - thanks to people suggestions I think I got the syntax right this time but I am still getting ClassNotFoundException
but on a different class in the common package:
demo.rmi.librarymanager.common.Library
Here's the new cmd line:
java -cp c:/development/eclipse/workspace/Library-Manager-Server/bin demo.rmi.librarymanager.server.LibraryManagerServer
-Djava.security.policy="C:/Development/Eclipse/Workspace/Library-Manager-Server/security.policy"
-Djava.rmi.server.codebase="file:/C:/Development/Eclipse/Workspace/Library-Manager-Server/bin file:/C:/Development/Eclipse/Workspace/Library-Manager-Common/bin"
Shall I add the c:/development/eclipse/workspace/Library-Manager-Common/bin
path (where demo.rmi.librarymanager.common.Library
lives) together with c:/development/eclipse/workspace/Library-Manager-Server/bin
after -cp as a command line argument?
Thanks to everyone for their help and patience - I am working on an RMI application and everything was good till I was working inside eclipse using the RMI plugin but now I am having a bit of an hard time as I am fairly new to java (as you cas see from my question!).
EDIT#3 : Ok I got it working:
java -cp c:/development/eclipse/workspace/Library-Manager-Server/bin;c:/development/eclipse/workspace/Library-Manager-Common/bin
demo.rmi.librarymanager.server.LibraryManagerServer
-Djava.security.policy="C:/Development/Eclipse/Workspace/Library-Manager-Server/security.policy"
-Djava.rmi.server.codebase="file:/C:/Development/Eclipse/Workspace/Library-Manager-Server/bin file:/C:/Development/Eclipse/Workspace/Library-Manager-Common/bin"
Thanks to everyone for the shower of humbleness.
The java commandline is:
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
where options include:
-client to select the "client" VM
-server to select the "server" VM
-hotspot is a synonym for the "client" VM [deprecated]
The default VM is client.
-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
A ; separated list of directories, JAR archives,
and ZIP archives to search for class files.
I think I see your problem - 'class' is not a keyword; it is the fullyQualified classname that you have to replace it with.
If your class files are in bin then the command might look like:
java -cp bin myClass
so perhaps
java -cp bin demo.rmi.librarymanager.server.LibraryManagerServer
if you are in the directory of your Eclipse project.
Note that Eclipse has settings (which you can override) for where the classes are. I have found that different versions of Eclipse have different ones by default. So I have seen bin
, classes
or (as I am using maven) target/classes
.
This will probably work:
java -cp c:\development\eclipse\workspace\Library-Manager-Server\bin\ demo.rmi.librarymanager.server.LibraryManagerServer
This assumes that you want to run the class LibraryManagerServer
in the package demo.rmi.librarymanager.server
.
Note that if you use classes in packages (which is advisable except for short test or learning code), you have to
From your commandline I would guess:
java -cp c:/development/eclipse/workspace/Library-Manager-Server/bin
-Djava.security.policy="C:/Development/Eclipse/Workspace/Library-Manager-Server/security.policy"
-Djava.rmi.server.codebase="file:/C:/Development/Eclipse/Workspace/Library-Manager-Server/bin/ file:/C:/Development/Eclipse/Workspace/Library-Manager-Common/bin/"
demo.rmi.librarymanager.server.LibraryManagerServer
Java paths use / as separators, even on widnows, the classpath should point to the root of your package hierarchy and the class to run is given in package notation relative to the classpath.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.