Avatar billede limes_planum Praktikant
18. september 2012 - 15:32 Der er 51 kommentarer og
1 løsning

Export fra Eclipse - Min .Jar-fil kan ikke åbnes trods at Java er inst.?

Når jeg eksporterer mit Slick-spil (Slick: spil-udvidelse) fra Eclipse, er jeg usikker på hvordan jeg skal eksportere for at spillet kan åbnes.
Jeg bruger (selvf.) signing af filen( http://wiki.plexinfo.net/index.php?title=How_to_sign_JAR_files )

Hvad skal jeg gøre?
Avatar billede arne_v Ekspert
18. september 2012 - 16:31 #1
Hvis din jar fil har et manifest med et Main-Class direktiv, saa boer det kunne starte.

Hvordan ser manifest ud?

(Eclipse kan godt lave det ved eksport)
Avatar billede limes_planum Praktikant
19. september 2012 - 08:20 #2
Hej - tak for komm. Linker lige et foto/scr-dump (selvom det kan være lidt imod forummets rutiner at være afhængig af dens slags links i frmetiden).

->> Her kan du se hvordan jeg eksporter: http://www.preforce.dk/div/manifest_eksport.png

Efter eksporten (og på trods af at jeg både har signet og manifest til at ligge ved siden af + at jeg har renset for warnings *) får jeg nu en 'java exception occurred'** når jeg prøver at åbne .jar'en

*) Warnings: har mest været simple warnings, der nu er renset, men dem er tilbage er warnings som '.. is never used' (men som bliver brugt alligevel, bare uden for Eclipse dev-scopet (inde i if-statements etc.)) samt warnings om at TrueTypeFont is deprecated (udgået). Finder at disse ikke burde kunne vælte læsset.

**) Kan godt regne ud at det nu sikkert er en kode-mæssig fejl. Har haft problemer med en out-of-index-fejlmedd., som nu er rettet til at kunne afvikle i eclipse-dev (kan denne evt. jage mig ved export?)
Avatar billede arne_v Ekspert
20. september 2012 - 01:49 #3
hvilken exception?
Avatar billede limes_planum Praktikant
20. september 2012 - 19:23 #4
'A Java exception has occured'
Avatar billede arne_v Ekspert
20. september 2012 - 19:27 #5
Catcher du exception uden at udskrive hele fejlen?
Avatar billede limes_planum Praktikant
21. september 2012 - 07:29 #6
'A Java exception has occured' var den fejlmeddelelse jeg fik når jeg kørte den publishede i Windows - og altså ikke i Eclipse
(jeg havde ikke der mulighed for at klikke 'details' som man ellers plejer i de tilfælde)

Jeg er dog nu kommet væk fra at denne fejlmedd. kommer (grundet at jeg har fået renset alle warnings væk (herunder at ændre truetype (deprecated) til Unicodefont)).
Men nu kan den bare ikke åbne filen.

Leder nu efter at kunne bestemme/definere at kunne omgå SSL-trustworthness i Java, men kan ikke rigtig finde det under jre7?

Kan jeg evt. gøre det i Win7's opsætning af Java/SSL et sted?
Avatar billede limes_planum Praktikant
21. september 2012 - 22:41 #7
Kiggede under firewall'en - intet held der..
Geninstallerede også (faktisk den nyeste version af) Eclipse - stadig no go :-/
Avatar billede limes_planum Praktikant
22. september 2012 - 15:54 #8
Hej igen .. Spørgsmålets underliggende præmis må vel være at jeg gerne vil have (bare et eller andet) online som folk/arbejdsgivere kan se downloade. Jeg har således haft i baghovedet at ville eksportere til Android som backup.

Efter at have installeret Eclipse-Juno, og installeret plugin-pakken til Android, er jeg således kommet til at skulle definere hvor "Android SDK directory" ligger for at kunne eksportere til Android:
Se "Updating the ADT Plugin" her: http://developer.android.com/sdk/installing/installing-adt.html#Updating

Kunne være du havde overblik over hvor og hvordan disse directories hænger sammen on er/ligger?
Avatar billede limes_planum Praktikant
22. september 2012 - 15:57 #9
".. sammen og er/ligger? .."
Avatar billede arne_v Ekspert
22. september 2012 - 17:39 #10
Jeg er totalt forvirret.

Hvad er det du laver? Desktop app? Applet? Android app?
Avatar billede limes_planum Praktikant
22. september 2012 - 18:32 #11
Ok - forstår .. Vil gerne (som udgangspunkt) lave en desktop app, til download og afvikling for brugeren (spillet fylder 11 mb, da jeg ikke har haft succes med at bruge SVG-graphic (en import jeg ikke kan få til at virke))

Men Applet er da også en mulighed (størrelsen til trods). Jeg har tidligere eksporteret applets med succes fra Processing.

Men har du selv tidligere ekspoteret til applet fra Eclipse?

- - -
(Android var min backup-plan, men den er altså også lidt problemfyldt)
Avatar billede arne_v Ekspert
22. september 2012 - 19:48 #12
Java desktop app med normal download eller via Java Web Start var de mest oplagte muligheder.

Evt. problemer skal loeses.

Jeg builder altid de egentligt artifakter med ant.
Avatar billede limes_planum Praktikant
22. september 2012 - 20:54 #13
Har du published jar-filer fra Ant der kan åbnes på andre Win7 desktops end din egen? (selvfølgelig givet at de er signede efterfølgende)
Avatar billede arne_v Ekspert
22. september 2012 - 22:02 #14
Hvis der er Java paa de andre Win7 maskiner saa kan de koere Java programmer.

Uanset hvordan man bygger de jar filer.
Avatar billede arne_v Ekspert
22. september 2012 - 22:02 #15
Hvorfor skal de jar filer signes?

Typisk er det for applets som skal have privs.
Avatar billede limes_planum Praktikant
23. september 2012 - 02:07 #16
Ok - jeg ser hvad du mener.. prøver lige at lave et ultra simpelt (ikke-Slick) program i Eclipse i morgen, for at se om det hjælper (udelukker således både kode-problemer og Slick-problemer)

Hvis ikke det hjælper må det blive Ant i fremtiden i stedet for Eclipse (håber at jeg ( - og relativt nemt) kan overføre mine .java class-filer til Ant fra Eclipse)
Avatar billede arne_v Ekspert
23. september 2012 - 02:24 #17
Eclipse og ant virker fint sammen.

Saa fra Eclipse kan du:
- skrive Java koden
- skrive ant build script
- koere ant build script
Avatar billede limes_planum Praktikant
24. september 2012 - 10:34 #18
Jeg var ellers så fyldt med energi da jeg skulle til at exportere mit hårdt-slid-udførte (og alligevel ret simple) java-spil, fra Eclipse.

Den energi er nu ret tilintetgjort, så jeg vil høre om du har et par fif til hvordan man, nemmest, læser og udfører ?:

http://ant.apache.org/manual/install.html

(herunder specielt 'Setup'-delen selvfølgelig - hvilke af de efterfølgende punkter er derefter vigtige at udføre)

PS: Har set du tidligere har lavet how-to-guides herinde på eksperten -eks.vis; "Installering af Ant på Windows 7" -> kunne det her leve op til en sådan (det er ikke ligefrem pædagogik der præger ovenstående link, og jeg er kun en 'Commmandprompt-Environment-variables'-jonglør, der kan jonglere med 2-3 bolde :-// )
Avatar billede arne_v Ekspert
24. september 2012 - 15:43 #19
Du goer livet alt for vanskeligt for dig selv.

:-)

Eclipse kommer med ant.

Hoejreklik paa projektet (ikke src) og vaelg new file. kald filen for build.xml og giv den et indhold som:

<project name="foobar" default="pack">
    <target name="build">
        <javac srcdir="src" destdir="bin"/>
    </target>
    <target name="pack" depends="build">
        <jar destfile="C:/foobar.jar" basedir="bin"/>
    </target>
</project>


Hoejreklik paa build.xml og vaelg run.

Voila saa har du en jar fil.

For at faa manifest paa plads retter du:

<jar destfile="C:/foobar.jar" basedir="bin"/>

til:

<jar destfile="C:/foobar.jar" basedir="bin">
    <manifest>
      <attribute name="Main-Class" value="mypackage.MyMainClass"/>
    </manifest>
</jar>

Voila, saa skulle jar filen kunne koeres.

(husk at ret foobar, mypackage og MyMainClass til det rigtige)
Avatar billede limes_planum Praktikant
25. september 2012 - 00:03 #20
Ok - tak, lækkert at det ik bør være sværere men.. :


Buildfile: C:\Users\TD_DS_IS\workspace\Ham Blaster\build.xml
build:
    [javac] C:\Users\TD_DS_IS\workspace\Ham Blaster\build.xml:3: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds

BUILD FAILED
C:\Users\TD_DS_IS\workspace\Ham Blaster\build.xml:3: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "C:\Program Files\Java\jre7"

Total time: 901 milliseconds
Avatar billede arne_v Ekspert
25. september 2012 - 00:30 #21
Perhaps JAVA_HOME does not point to the JDK.

er nok problemet
Avatar billede arne_v Ekspert
25. september 2012 - 00:30 #22
Du skal nok have sat JAVA_HOME env variabel.
Avatar billede limes_planum Praktikant
25. september 2012 - 08:13 #24
- som opfølgende selvstudie i 'CLASSPATH' har jeg netop læst: http://en.wikipedia.org/wiki/Classpath_%28Java%29

... men har dog stadig lidt svært ved at se hvordan jeg skal få sti-enderne til at hænge sammen med set-classpath-command?

(kigger lige pt. på (v/ højreklik på mit projekt i  projekt eksplorer) under 'Build Path' for at se om der evt. kunne være en Eclipse-baseret udvej)

[Har desuden min tvivl om at mit projekt-navn (her 'Ham Blaster' taget fra en tutorial) må have et mellerum i sig ved eksport? ->> Men når jeg prøver at rename projektet til 'HamBlaster', kommer Eclipse med fejlmedd; "Resource 'Ham Blaster' is out of sync with the file system"]
Avatar billede limes_planum Praktikant
25. september 2012 - 09:43 #25
ok .. momento - vores indlæg har krydset (tjekker op på dine oplæg og vender tilbage med samling (der også inddrager mit seneste indlæg))
Avatar billede limes_planum Praktikant
25. september 2012 - 09:44 #26
"..tjekker op på dine indlæg og.."
Avatar billede arne_v Ekspert
25. september 2012 - 15:33 #27
ant haandterer classpath - den skal bare vide hvor Java ligger paa din PC
Avatar billede limes_planum Praktikant
25. september 2012 - 22:07 #28
ok, ser ud til at jeg efter en 3-4 forsøg fik møljøvar'en rigtig, men nu er der en anden lille ting:
Buildfile: C:\Users\TD_DS_IS\workspace\Ham Blaster\build.xml
build:
    [javac] C:\Users\TD_DS_IS\workspace\Ham Blaster\build.xml:3: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
pack:
      [jar] Building jar: C:\WAM.jar

BUILD FAILED
C:\Users\TD_DS_IS\workspace\Ham Blaster\build.xml:7: the file attribute is required

Total time: 921 milliseconds
- - -

Min build.xml:

<project name="WAM" default="pack">
    <target name="build">
        <javac srcdir="src" destdir="bin"/>
    </target>
    <target name="pack" depends="build">
        <jar destfile="C:/WAM.jar" basedir="bin"/>
            <manifest>
      <attribute name="Main-Class" value="JavaGame.Game"/>
    </manifest>
    </target>
</project>
Avatar billede arne_v Ekspert
25. september 2012 - 22:20 #29
<jar destfile="C:/WAM.jar" basedir="bin"/>
            <manifest>
      <attribute name="Main-Class" value="JavaGame.Game"/>
    </manifest>

->

        <jar destfile="C:/WAM.jar" basedir="bin"> <!-- ingen / her -->
            <manifest>
                <attribute name="Main-Class" value="JavaGame.Game"/>
            </manifest>
        </jar>
Avatar billede limes_planum Praktikant
25. september 2012 - 23:39 #30
Det virkede ... og fik oprettet WAM.jar - men desværre tilbage til at den skriver at den får en "Java Exception has ocurred" når jeg dobbeltklikker filen

Linket herunder forklarer hvordan jeg slipper for warningen:

warning 'includeantruntime' was not set , defaulting to build.sysclasspath=last; set to false for repeatable builds.

- selve linket:

http://www.coderanch.com/t/503097/tools/warning-includeantruntime-was-not-set

Har prøvet at oprette den attribute under Eclipse nu, men det virker desværre heller ik (lidt mange typer af attributer at vælge i mellem derinde og jeg ved ikke hvilken en jeg skal tage?)
Avatar billede arne_v Ekspert
25. september 2012 - 23:42 #31
Den warning betyder ikke noget.
Avatar billede arne_v Ekspert
25. september 2012 - 23:43 #32
Jeg forstaar stadig ikke hvorfor du ikke faar flere oplysninger om fejl.

Catcher du exception uden at udskrive det hele?
Avatar billede arne_v Ekspert
25. september 2012 - 23:43 #33
Eller udskriver du fejl til console?
Avatar billede arne_v Ekspert
25. september 2012 - 23:45 #34
} catch (XxxException e) {
    JOptionPane.showMessageDialog(null, e.getMessage());
}

er en OK konstruktion i GUI apps.
Avatar billede arne_v Ekspert
25. september 2012 - 23:46 #35
hvis du skriver til console, saa aaben et cmd vindue og koer command line:

java -jar wam.jar
Avatar billede limes_planum Praktikant
26. september 2012 - 19:43 #36
Har nu smidt 7-9 ekstra try-catch'es ind i mine classer (med din JOptionPane-version af catch) - her er exceptionen:

http://www.preforce.dk/exception.png
Avatar billede arne_v Ekspert
26. september 2012 - 20:00 #37
Du skal have et Class-Path direktiv ind i manifest med navnet paa den jar som indeholder den klasse!
Avatar billede limes_planum Praktikant
26. september 2012 - 20:09 #38
Ok - kigger på det - i mellemtiden fik jeg publishet et mindre ikke Slick-program der virkede.. (det er altså ikke Eclipse-installering eller OS-opsætning eller miljø-var ting (alle disse således udelukket))

Men som sagt kigger på ClassPath-ting du snakker om - så faktisk på et internet-eksempel for et par dage siden med det du snakker om (tror jeg?) - noget a la:

Manifest-Version: 1.0
Main-Class: JavaGame.Game
Class-Path: lib/lwjgl.jar lib/slick.jar 
<-- new line without any content -->

prøver det af nu..
Avatar billede limes_planum Praktikant
26. september 2012 - 20:13 #39
Prøvede den her xml-ops. uden held:

<project name="WAM" default="pack">
    <target name="build">
        <javac srcdir="src" destdir="bin"/>
    </target>
    <target name="pack" depends="build">
      <jar destfile="C:/WAM.jar" basedir="bin"> <!-- ingen / her -->
            <manifest>
                <attribute name="Main-Class" value="JavaGame.Game"/>
                <attribute name="Class-Path" value="lib/lwjgl.jar lib/slick.jar"/>             
            </manifest>
        </jar>
    </target>
</project>
Avatar billede arne_v Ekspert
26. september 2012 - 20:22 #40
<attribute name="Class-Path" value="lwjgl.jar slick.jar"/>   

med lwjgl.jar og slick.jar i samme dir som din jar
Avatar billede arne_v Ekspert
26. september 2012 - 20:37 #41
du kunne ogs beholde direktivet og smide dem i et lib dir ved siden af din jar, men det ville vaere noget juks at kopiere rundt med
Avatar billede limes_planum Praktikant
26. september 2012 - 21:15 #42
java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
Avatar billede arne_v Ekspert
26. september 2012 - 21:21 #43
er der en lwjgl.dll ?

hvis ja saa smid den i samme dir
Avatar billede limes_planum Praktikant
27. september 2012 - 00:34 #44
Nej, men jeg tror jeg har fundet et eller andet brugbart her - tænkte at der måtte være noget indenfor slick-fora der kunne hjælpe når denne tråd nu er kommet så tæt på:

http://slick.javaunlimited.net/viewtopic.php?f=3&t=3341

(kan være du ikke selv bruger Slick, men jeg afprøver ovenstående metode og fortæller selvf. om res.)
Avatar billede arne_v Ekspert
27. september 2012 - 00:53 #45
Jeg ville ikke bruge det jarsplice tool.
Avatar billede arne_v Ekspert
27. september 2012 - 00:53 #46
Bare faa de DLL du skal bruge i samem dir som de jar filer du skal bruge, saa boer du vaere OK.
Avatar billede limes_planum Praktikant
27. september 2012 - 08:05 #47
Eftersom snakken kom ind at vedlægge forskellige filer (.jar - .DLL) tog djævlen ved mig og i forbindelse med at gå ind i min Slick-downloadede plugin-pakke, smækkede jeg min buildede .jar-fil i slick-mappens 'lib'-mappe.

At Slick m.fl. forklarer at man bare behøver lwjgl.jar og slick.jar som tilknyttede filer i Eclipse, står for fald - for nu virker det.

Man kan argumentere for at de ca. 20 .jar-filer og andre supporterende filer i 'lib'-folderen ikke nødvendigvis allesammen bruges, men da mit spil (grundet ikke SVG-opsætningen af grafikken er ret tung 12-25 mb) ikke er til web-afvikling pt (men desktop-afvikling), er det løsningen jeg nu færdig-gører, med en vedlagt inst.-mappe der indeholder alle disse filer.

Jeg var ikke kommet i nærheden af at løse problemet (herunder styre build v/ Ant - XML) uden stædig hjælp fra dig af ... så fuld point gives her
Avatar billede arne_v Ekspert
27. september 2012 - 16:47 #48
ok
Avatar billede arne_v Ekspert
27. september 2012 - 16:48 #49
Jeg ville nok lade ant build scriptet putte din jar i et andet dir og saa kopiere alle Slick lib filerne derover.

Du kan ogsaa faa ant til at lave en zip fil med det hele.
Avatar billede limes_planum Praktikant
27. september 2012 - 18:59 #51
ok - det er nok en pænere løsning.. tak igen
Avatar billede arne_v Ekspert
27. september 2012 - 19:07 #52
Man kan rigtigt meget med ant og det er et rigtigt godt vaerktoej at kende.

Fordelene over wizard er at:
- naar man har fundet noget som virker kan man goere det igen og igen lynhurtigt
- hvis det ikke virker kan man poste XML'en fremfor en lang beskrivelse af hvad man valgte i en wizard
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