2013-02-17 16 views
13

Wszystko, co próbuję zrobić, to przekonwertować prosty program java do pliku macappX .app, aby można go było dystrybuować jako prosty plik wykonywalny.Konwersja Java do pliku .app dla MacOSX przy użyciu JarBundler

czytałem wszędzie i każdy mówi to samo:

  1. Zastosowanie Xcode - o ile mogę powiedzieć, Xcode nie obsługuje Java Buduje
  2. Używaj Jar Bundler - Wszystko samouczki wydają się być nieaktualne i nie działa. Kiedy uruchomić: java -jar jarbundler-2.0.0.jar

    Konsola „nie zwraca główną oczywisty atrybut jarbundler-2.0.0.jar”

    Jeśli mam rację, to byłoby czy ktokolwiek zapakował plik JAR w prawo? Ale próbowałem pobrać go z innych stron internetowych i innych wersji, ale mam to samo.

  3. Mówią, że możesz po prostu samodzielnie tworzyć katalogi i pliki, a następnie zmienić nazwę folderu na .app, a następnie uruchomić polecenie lub coś takiego, ale jest to skomplikowane, ponieważ nie wiem dokładnie, jak utworzyć informacje. plik plist ... jeśli chcesz zrobić to w ten sposób, najlepsza strona znalazłem do tej pory jest to jeden: Java Deployment Options for OSX

mam skompilowane mój kod do pliku .jar, mam ikona i wszystko, wszystko co muszę zrobić, to w jakiś sposób spakować do pliku .app.

Dzięki za pomoc z góry!

Rozwiązanie

EDYCJA: Dostałem! Po 7 lub 8 godzinach wyszukiwania i czytania działa. Ponieważ jestem nowy w tym, zamierzam opublikować wszystko, czego nauczyłem się, aby uratować innych, którzy napotykają na ten sam problem z powodu bólu. Zrezygnowałem z metody "zrób to sam" i wróciłem do JarBundlera. Jeśli ktokolwiek czyta to i nie wie nic o ANT, oto co zrobiłem: Pobierz JarBundler, dostałem mój tutaj: Mac OS X JarBundler ANT Task i postępuj zgodnie z instrukcjami tam.

Kiedy go pobrać, należy umieścić plik jarbundler-2.2.0.jar tutaj:

/usr/share/ant/lib

może trzeba uruchomić polecenie, aby przenieść go, coś jak :

sudo mv jarbundler-2.2.0.jar ~ /../../ usr/share/ant/lib/jarbundler-2.2.0.jar

jak powiedziałem, wciąż się uczę , ale to działało dla mnie.

Upewnij się, że przesuwałeś właściwy plik jarbundler, tutaj napotkałem problemy, przeniosłem cały folder, zamiast wewnętrznego pliku .jar, więc upewnij się, że przeniesiesz plik .jar znajdujący się w pobranym zipie folderu, nie wszystko, w przeciwnym razie, gdy go zbudujesz, dostaniesz komunikat o błędzie: klasa taskdef net.sourceforge.jarbundler.JarBundler nie może zostać znaleziony.

Następnie musisz skompilować swój kod do pliku .jar (są dwa typy, jeden jest jak plik .zip, a drugi jest plikiem wykonywalnym) Potrzebujesz normalnego pliku JAR, NIE wykonywalnego, aby to zrobić Najpierw musisz skompilować swój kod, aby uzyskać.Pliki klasy, a następnie otworzyć wiersz polecenia i postępuj zgodnie z instrukcjami tutaj: Create a Jar File Polecenie będzie wyglądać następująco:

jar cf myName.jar * .class

Gdy masz plik jar, trzeba utworzyć plik .xml w tym samym folderze i musi mieć nazwę build.xml. Edytuj go za pomocą edytora tekstu. Postępuj zgodnie z instrukcjami na powyższym linku, aby go utworzyć. Będzie to wyglądać mniej więcej tak:

//build.xml 

<project name="MyProject"> 

<taskdef name="jarbundler" 
classname="net.sourceforge.jarbundler.JarBundler" /> 

<target name="bundle"> 

<jarbundler dir="release" 
     name="Apollo's Image Editor" 
     mainclass="ImageEditorGUI" 
     jar="ApolloIE.jar" 
     icon="Aperture.icns" /> 

</target> 

</project> 

Stamtąd (używam MacBook Pro przy okazji) wszystko co musisz zrobić, to uruchomić wiersz polecenia z tego folderu:

mrówek wiązki

i powinien utworzyć plik .app w folderze o nazwie release. Podsumowując: wszystko, czego potrzebujesz, to plik .jar i plik build.xml w tym samym folderze, a następnie uruchom komendę: Pakiet ant (lub jakkolwiek nazwałeś swój cel w pliku build.xml, nazwałem go pakietem)

Powodzenia, mam nadzieję, że to pomoże każdemu.

Jeśli ktoś się zastanawia, wziąłem Info.plist, który został wygenerowany przez JarBundler i umieścić go w katalogu, który robiłem i działało! Tak, że był problem, po prostu nie wiem, jak sformatować go tak ... to jest tutaj: Info.plist

+0

jaka wersja XCode? – MadProgrammer

+0

Xcode wersja 4.6, właśnie zaktualizowałem to dzisiaj –

+1

Nie próbowałem tego, ale mógłbyś rzucić okiem na [to] (http://informagen.com/JarBundler/) – MadProgrammer

Odpowiedz

2

W systemie Mac OS X, application bundle jest katalogiem, który ma nazwę kończącą się .app i że zawiera zasoby używane przez aplikację. Ten game jest przykładem, który konstruuje pakiet in situ przy użyciu antbuild script. Dodatkowe odnośniki są cytowane here.

+0

Dzięki za linki. Stworzyłem wszystkie katalogi i pliki, teraz po prostu potrzebuję wymyślić, co umieścić w Info.plist, ponieważ mówią, że Xcode generuje je dla ciebie, ale nie sądzę, że już obsługują projekty Java. Czy wiesz, co jest absolutnie niezbędne w pliku? Wiem, że potrzebuję odniesienia do klasy z główną metodą, ale czy jest coś jeszcze? –

+0

Właśnie edytuję przykładową [Info.plist] (http://sourceforge.net/p/robotchase/code/67/tree/trunk/Info.plist); klucze są wymienione w artykule w cytowanej powyżej odpowiedzi. – trashgod

+0

Do tej pory ten link był dla mnie największą pomocą: [opcje wdrażania Java] (http://developer.apple.com/library/mac/#documentation/Java/Conceptual/Java14Development/03-JavaDeployment/JavaDeployment. html) Podążyłem za wszystkimi krokami w tym łączu iz jakiegoś powodu, gdy dwukrotnie klikam moje .app nic się nie dzieje ... –

0

Pracowałem dla mnie! Z jakiegoś powodu nie mogłem umieścić pliku jarbundler .jar w obszarze Ant, ale zamiast tego musiałem go wyraźnie wskazać z pliku build.xml (umieściłem go w <projectRoot>/jarbundler/jarbundler-2.2.0.jar). Mój build.xml wyglądał następująco:

<?xml version="1.0" encoding="UTF-8"?> 
<project name="TripleWhammy" default="default" basedir=".">   
    <taskdef name="jarbundler" 
      classname="net.sourceforge.jarbundler.JarBundler" 
      classpath="jarbundler/jarbundler-2.2.0.jar" /> 

    <target name="bundle"> 
     <jarbundler dir="." 
        name="Triple Whammy" 
        mainclass="org.bigclue.TripleWhammy" 
        jar="target/triple-whammy-1.0-jar-with-dependencies.jar" 
        icon="triple-whammy.icns"/> 
    </target> 
</project> 

To utworzyło "Triple Whammy.app" w moim katalogu projektu. Moja ikona wygląda dobrze. Słodkie.

Teraz, kiedy został zbudowany prosty dystrybuowana Dice .app, czasu, aby zbudować coś niesamowite ...

(Mac OS X 10.6.8, Java 1.6.0_51, Ant 1.8.4; zbudowany mój .jar używanie Maven 3.0.4 i jego "montażowej" wersji wtyczki 2.4).

Powiązane problemy