Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797

    [JAVA] aggiungere .jar per eseguire .class

    Sto impazzendo.
    allora, ho dei .class
    se gli eseguo come
    java utilizzando il nome del main mi dice:
    codice:
    stefano@stefano-laptop:~/temp/theCreatorLast/theCreator$ java unitn.run.MainClass Natale/TestNatale.bpel
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/PropertyConfigurator
    	at unitn.run.DeepThought.<init>(DeepThought.java:26)
    	at unitn.run.MainClass.main(MainClass.java:9)
    Caused by: java.lang.ClassNotFoundException: org.apache.log4j.PropertyConfigurator
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    	... 2 more
    ora, ho i jar che servono in lib/

    se specifico
    java -classpath lib da:
    codice:
    stefano@stefano-laptop:~/temp/theCreatorLast/theCreator$ java -classpath lib unitn.run.MainClass Natale/TestNatale.bpel
    Exception in thread "main" java.lang.NoClassDefFoundError: unitn/run/MainClass
    Caused by: java.lang.ClassNotFoundException: unitn.run.MainClass
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    Could not find the main class: unitn.run.MainClass.  Program will exit.
    se specifico così da:
    java -classpath lib/* da:
    codice:
    stefano@stefano-laptop:~/temp/theCreatorLast/theCreator$ java -classpath lib/* unitn.run.MainClass Natale/TestNatale.bpel
    Exception in thread "main" java.lang.NoClassDefFoundError: lib/commons-collections-3/1/jar
    Caused by: java.lang.ClassNotFoundException: lib.commons-collections-3.1.jar
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    Could not find the main class: lib/commons-collections-3.1.jar.  Program will exit.
    come posso fare?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Devi mettere in "classpath" i jar necessari e la directory che fa da "base" per i tuoi package.

    Se la directory dove c'è la "unitn" è quella "corrente" puoi fare (noto che sei su Linux/Unix):

    java -classpath lib/blabla.jar:. unitn..........

    Vedi che c'è anche il '.' (=directory corrente).

    E nota che specificare lib/* (con il wildcard che matcha qualunque .jar/.JAR in quella directory) funziona ma solo da Java 6.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Devi specificare in classpath ogni singolo jar necessario. Non puoi mettere semplicemente lib/*

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da pozzad
    Non puoi mettere semplicemente lib/*
    Se usa Java 6, sì, funziona. Essendo su sistema Unix-like però bisogna prestare solo attenzione che il * non venga interpretato dalla shell come wildcard e quindi "espanso".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.