Avatar billede javaknold Nybegynder
30. maj 2003 - 13:31 Der er 11 kommentarer og
2 løsninger

jar / directory

Hvordan refererer man til et directory i en jar-fil

Har et directory som indeholder en jar-fil og skal bruge en class fra et directory i jar-filen
Avatar billede dsj Nybegynder
30. maj 2003 - 13:34 #1
java -classpath "myjar.jar" the.path.to.main.MyMainCLass
Avatar billede dsj Nybegynder
30. maj 2003 - 13:36 #2
som altså betyder: the/path/to/main/MyMainClass.class
Avatar billede arne_v Ekspert
30. maj 2003 - 13:36 #3
Hvis du har:
  C:\dir1\dir2\bib.jar
som indeholder:
  pakke1/pakke2/MyMain.class
så kan du køre programmet som:
  java -classpath C:\dir1\dir2\bib.jar pakke1.pakke2.MyMain

Altså: directories inde i en jar svarer til pakke strukturen.
Avatar billede javaknold Nybegynder
30. maj 2003 - 13:53 #4
Det ville jeg også mene - men det er mig umuligt at få det til at virke

Har jar-fil  XX.jar som indeholder classer, directory's og en jar-fil YY.jar

d.v.s at jar-fil YY.jar har jeg smidt kopi af alle vegne, alt andet fungerer, men bruge classer i YY.jar kan jeg ikke.

Nogen løsningsforslag ???
Avatar billede arne_v Ekspert
30. maj 2003 - 13:57 #5
Hov.

Du kan *IKKE* bruge en jar-fil indeni en jar-fil.
Avatar billede arne_v Ekspert
30. maj 2003 - 13:58 #6
Du har 2 muligheder:

1)  have de 2 jar-file og angive begge i din -classpath

2)  have de 2 jar-filer og angive den ene i din -classpath og
    have den anden i den førstes manifest

#1 er langt det nemmeste !
Avatar billede javaknold Nybegynder
30. maj 2003 - 14:06 #7
Njaaa- det forstår jeg bare ikke, er der noget jeg har misset( uddrag fra Understanding the Manifest)

Download extensions are JAR files that are referenced by the manifest files of other JAR files. See the trail on the extension mechanism for information about extensions.

In a typical situation, an applet will be bundled in a JAR file whose manifest references a JAR file (or several JAR files) that will serve as an extension for the purposes of that applet. Extensions may reference each other in the same way.

Download extensions are specified in the Class-Path header field in the manifest file of an applet, application, or another extension. A Class-Path header might look like this, for example:


Class-Path: servlet.jar infobus.jar acme/beans.jar


With this header, the classes in the files servlet.jar, infobus.jar, and acme/beans.jar will serve as extensions for purposes of the applet or application. The URLs in the Class-Path header are given relative to the URL of the JAR file of the applet or application.

?????????????????????????????????????
Avatar billede javaknold Nybegynder
30. maj 2003 - 14:27 #8
arne_v

Jeg gør faktisk som dit forslag nr 2.

Class-Path: YY.jar

Er det ikke korrekt ?
Avatar billede arne_v Ekspert
30. maj 2003 - 14:49 #9
Hvis YY.jar ligger i samme directory som den jar der har det manifest,
så synes jeg at det ser korrekt ud ifølfe dokumentationen.

[jeg har aldrig selv brugt det - jeg putter altid alle jar filerne
eksplicit i -classpath]
Avatar billede javaknold Nybegynder
30. maj 2003 - 15:46 #10
Okay!

Jeg arbejder lidt videre - vil meget gerne have det til at virke på den måde, selvom jeg nok ender med at extracte YY.jar, kopiere de directories jeg skal bruge og pakke til én jar fil

Da i begge har ret, tillader mig at dele points 50/50.
Håber det er iorden med jer begge to!!
Avatar billede arne_v Ekspert
30. maj 2003 - 15:50 #11
OK - jeg har lige lavet et lille eksempel der virker !

C:\e>dir /s
Volume in drive C has no label.
Volume Serial Number is 544F-996A

Directory of C:\e

30/05/2003  15:00      <DIR>          .
30/05/2003  15:00      <DIR>          ..
30/05/2003  15:01                  94 Main.java
30/05/2003  15:02                  107 Sub.java
30/05/2003  15:12                  286 Main.class
30/05/2003  15:12                  386 Sub.class
30/05/2003  15:12                  41 test.mf
30/05/2003  15:03      <DIR>          run
30/05/2003  15:11                  161 test.bat
30/05/2003  15:12                  729 sub.jar
30/05/2003  15:12                  708 main.jar
              8 File(s)          2,512 bytes

Directory of C:\e\run

30/05/2003  15:03      <DIR>          .
30/05/2003  15:03      <DIR>          ..
30/05/2003  15:12                  729 sub.jar
30/05/2003  15:12                  708 main.jar
              2 File(s)          1,437 bytes

    Total Files Listed:
              10 File(s)          3,949 bytes
              5 Dir(s)  10,230,415,360 bytes free

C:\e>type Main.java
public class Main {
  public static void main(String[] args) {
      Sub.test();
  }
}

C:\e>type Sub.java
public class Sub {
    public static void test() {
        System.out.println("Hello world");
    }
}

C:\e>type test.bat
javac *.java
jar cvmf test.mf main.jar Main.class
jar cvf sub.jar Sub.class
cd run
copy ..\*.jar .
java -classpath main.jar;sub.jar Main
java -jar main.jar

C:\e>type test.mf
Main-Class: Main
Class-Path: sub.jar

C:\e>test

C:\e>javac *.java

C:\e>jar cvmf test.mf main.jar Main.class
added manifest
adding: Main.class(in = 286) (out= 219)(deflated 23%)

C:\e>jar cvf sub.jar Sub.class
added manifest
adding: Sub.class(in = 386) (out= 277)(deflated 28%)

C:\e>cd run

C:\e\run>copy ..\*.jar .
..\sub.jar
..\main.jar
        2 file(s) copied.

C:\e\run>java -classpath main.jar;sub.jar Main
Hello world

C:\e\run>java -jar main.jar
Hello world
Avatar billede arne_v Ekspert
30. maj 2003 - 15:50 #12
Mit gæt på hvad der går galt er at du ikke har et linie-skift
i manifest filen efter linien med Class-Path !
Avatar billede javaknold Nybegynder
30. maj 2003 - 16:11 #13
Både ja og nej, jeg har følgende

Class-Path: YY.jar
Class-Path: dir1/YY.jar
Main-Class: dir.dir2.dir3.Start
Og_dette_er_endnu_et_linieSkift

Det er bare nogen af de/det sidste forsøg jeg har prøvet

og med blandt andet ./YY.jar

Ville gerne kunne dobbeltklikke på skrivebordet, men er pt. endt en bat fil
som:    set classpath=d:\XX.jar
        java -jar XX.jar

Jeg kan ikke få den til at fange XX.jar hvis jeg ikke bruger 'set classpath=d:\XX.jar'  (HAR IKKE SAT MILJØ VARIABLER PÅ MASKINEN)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester