XStream. Could not find or load main class

0

Mam taki program z biblioteką XStream:

 import com.thoughtworks.xstream.*;

class Animals {

        public Animals(String name, int age)
        {
                this.name = name;
                this.age = age;
        }

        private String name;
        private int age;

}

public class testX {
        public static void main(String[] a ) {
                Animals animal = new Animals("pupu",27);

                XStream xstream = new XStream();
                String xml = xstream.toXML(animal);

                // zapisz String do pliku z rozszerzeniem .xml


        }
}

Kompiluje go poleceniem:

javc -classpath (moja ścieżka do xtream)/xstream-1.4.7/lib/xstream-1.4.7.jar testX.java  

Gdy chcę go opalić poleceniem:

 
java -classpath (moja ścieżka do xtream)/xstream-1.4.7/lib/xstream-1.4.7.jar XStreamTest
Error: Could not find or load main class XStreamTest

Wyświetlany jest powyższy błąd.

1

Nie znam biblioteki, której używasz, ale wydaje mi się, że klasą startową Twojego programu jest testX, a nie XStreamTest. Druga sprawa, opcja -classpath zmienia wartość zmiennej CLASSPATH, a nie dopisuje nowy katalog (nowego jara). Podsumowując, uruchamiać należy chyba tak:

  • java -classpath (moja ścieżka do xtream)/xstream-1.4.7/lib/xstream-1.4.7.jar;. testX**.
0

Tak to fakt tam błąd - z rozpędu - w nazwach plikach. Teraz skopiowałem, aby było prościej jar biblioteki do katalogu programy i spróbowałem go odpalić w następujący sposób:

java -classpath xstream-1.4.7.jar; testX

Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)
where options include:
    -d32          use a 32-bit data model if available
    -d64          use a 64-bit data model if available
    -server       to select the "server" VM
                  The default VM is server,
                  because you are running on a server-class machine.


    -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.
    -D<name>=<value>
                  set a system property
    -verbose:[class|gc|jni]
                  enable verbose output
    -version      print product version and exit
    -version:<value>
                  require the specified version to run
    -showversion  print product version and continue
    -jre-restrict-search | -no-jre-restrict-search
                  include/exclude user private JREs in the version search
    -? -help      print this help message
    -X            print help on non-standard options
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  enable assertions with specified granularity
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  disable assertions with specified granularity
    -esa | -enablesystemassertions
                  enable system assertions
    -dsa | -disablesystemassertions
                  disable system assertions
    -agentlib:<libname>[=<options>]
                  load native agent library <libname>, e.g. -agentlib:hprof
                  see also, -agentlib:jdwp=help and -agentlib:hprof=help
    -agentpath:<pathname>[=<options>]
                  load native agent library by full pathname
    -javaagent:<jarpath>[=<options>]
                  load Java programming language agent, see java.lang.instrument
    -splash:<imagepath>
                  show splash screen with specified image
See http://www.oracle.com/technetwork/java/javase/documentation/index.html for more details.
Nie odnaleziono polecenia 'testX', czy chodziło ci o:
 Polecenie 'testr' z pakietu 'testrepository' (main)
 Polecenie 'test' z pakietu 'coreutils' (main)
testX: nie znaleziono polecenia

 
0

A ten średnik to jest ci tam po co konkretnie? o_O

0

Tak mi doradził bogdans.
To bez średnika wygląda to tak:

 java -classpath xstream-1.4.7.jar testX
Error: Could not find or load main class testX
 
0

A czy ta klasa jest w jarze? Nie jest? To musisz dokleić :. do tego classpatha bo rozumiem że testX.class jest w katalogu w którym jesteś.

0

Chodzi o coś takiego:

java -classpath xstream-1.4.7.jar:. testX
Exception in thread "main" java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException
        at com.thoughtworks.xstream.XStream.<init>(XStream.java:350)
        at testX.main(testX.java:20)
Caused by: java.lang.ClassNotFoundException: org.xmlpull.v1.XmlPullParserException
        at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 2 more

 

Katalog bieżący wygląda tak:

 
$ ls
Adres.class    Osoba.class  testX.java         XStreamTest.class
Animals.class  testX.class  xstream-1.4.7.jar  XStreamTest.java
0

Spoko, ale widzisz że twoja biblioteka korzysta z innych których nie masz ;] Nie rozumiem tylko czemu nie zrobisz tego po ludzku, przez IDE i mavena...

1 użytkowników online, w tym zalogowanych: 0, gości: 1