java classpath în unix (Programare, Java, Jar, Classpath)

R71 a intrebat.

Pot rula java în cygwin+windows folosind următoarele setări (directorul sw/jar are mai multe fișiere jar, iar eu îl aleg pe cel relevant din linia de comandă java):

CLASSPATH=.;C:swjava_6u35lib\*;C:swjar\*
java org.antlr.Tool Calc.g

Dar am următoarele probleme atunci când rulează în linux:

(1) Nu pot seta un nume de director într-un classpath, următoarea linie raportează o eroare:

setenv CLASSPATH .:/sw/jdk1.6.0_35/lib/*:/sw/jar/*

(2) când execut explicit cu opțiunea -jar, tot primesc o eroare:

java -jar /sw/jar/antlr-3.4.jar org.antlr.Tool Calc.g
error(7):  cannot find or open file: org.antlr.Tool

Cu toate acestea, clasa există. Când fac jar tf /sw/jar/antlr-3.4.jar, obțin:

...
org/antlr/Tool.class

Așadar, întrebarea mea este: (a) cum specific în unix că directorul meu jar este xxx care conține mai multe fișiere jar și (2) cum aleg jar-ul relevant din acest dir la momentul execuției?

Comentarii

  • Ce shell folosiți pe Linux? Dacă setenv dă o eroare, este probabil că nu folosiți csh. –  > Por devnull.
2 răspunsuri
talonx

Pentru a specifica mai multe borcane într-un director, direct în comanda java, utilizați acest lucru

java -cp „/sw/jar/*” org.antlr.Tool Calc.g

Acest lucru va include toate jar-urile

Dacă doriți să setați classpath în sistemele Unix/Linux, utilizați acest lucru

export CLASSPATH=/sw/jar/a.jar:/sw/jar/b.jar

morgano

în sistemul Unix, utilizați acest lucru pentru a seta classpath-ul:

export CLASSPATH=myClassPath

în legătură cu faptul că nu găsiți jar-ul, folosiți o bară oblică (/), ceea ce înseamnă că traseul este absolut (nu relativ la dosarul dvs. de pornire), este ceea ce doriți?

Dacă doriți ca traseul să fie relativ la dosarul dvs. încercați:

java -jar ~/mypathToMyJar

Comentarii

  • Da, vreau o cale absolută. –  > Por R71.