*

Offline TonyWhite

  • Apostolo dello SPAM
  • ********
  • 32.474
  • 195
    • Se proprio non hai un cazzo da fare...
[Java] - Applicazioni portable
« il: 03 Aprile 2012, 20:14:54 »
Pubblico una piccola chicca che vi aiuterà a distribuire più facilmente i vostri programmi Java.

Capita qualche volta di dover dare un programma java a qualcuno che non sia un programmatore, beta tester, smanettone o Mac Gyver. E questo "qualche volta" coincide con il rilascio ufficiale del programma.
Nella situazione più semplice hai un file jar, fai doppio click e il tuo programma parte.
Nella situazione più tragica (99%) devi installare librerie native esterne, cambiare classe di avvio, passare argomenti, fare in modo che tutto possa essere portable e forse il programma parte.

Il classpath viene trattato in molti forum ed è più o meno la stessa solfa: devi installare le librerie a mano e quindi addio alla mia bella applicazione portable. Se invece l'applicazione non è bella, direte addio alla vostra brutta applicazione portable.

Supponiamo di avere un'applicazione (resisti.jar) che fa uso delle librerie nyan.so nyan.dll nyan.jnilib gestite da nyan.jar.
La nostra applicazione potrà essere portable grazie a questo script di avvio (lo so, "script" è una parola grossa)
Codice: resisti [Seleziona]
#!/bin/sh
APPDIR=$(dirname "$0")
java -Djava.library.path="$APPDIR" -cp "$APPDIR/*" Resisti [email protected]

(click to show/hide)

Script batch per Windows
Codice: resisti.bat [Seleziona]
echo off
set "appdir=%~dp0"
java -Djava.library.path="%appdir%" -cp "%appdir%Pacchetto.jar;%appdir%Supporto.jar;%appdir%Nyan.jar;%appdir%Resisti.jar" Resisti %*

(click to show/hide)

E buttate tutto brutalmente in una cartella.
L'unica cosa che cambia tra un sistema operativo e l'altro è lo script. Ma siccome con Linux copre più del 99% dei sistemi operativi esistenti e Windows il 0,9% su questo pianeta, mi posso ritenere soddisfatto e dire che l'applicazione è portable ed anche crossplatform.
Cotto e mangiato Ed il gioco è fatto.
« Ultima modifica: 04 Aprile 2012, 10:42:17 da tonywhite »

*

Offline TonyWhite

  • Apostolo dello SPAM
  • ********
  • 32.474
  • 195
    • Se proprio non hai un cazzo da fare...
Re:[Java] - Applicazioni portable
« Risposta #1 il: 04 Aprile 2012, 10:32:10 »
Changelog
Ho aggiunto lo script di avvio per Windows

Tuttora sono presenti i seguenti bug
  • Windows: Non è possibile indicare tutti i jar con * ma si devono scrivere tutti uno per uno
  • Non puoi usare un percorso con spazi, ergo il path fa cagare

Ulteriori aggiornamenti a breve
« Ultima modifica: 04 Aprile 2012, 10:42:52 da tonywhite »

*

Offline the_original_g

  • ******
  • 7.618
  • 104
  • シェモキレッジェ
J:
unita' 4/1981
comp: 7.99%

*

Offline TonyWhite

  • Apostolo dello SPAM
  • ********
  • 32.474
  • 195
    • Se proprio non hai un cazzo da fare...
Re:[Java] - Applicazioni portable
« Risposta #3 il: 04 Aprile 2012, 14:43:10 »
Grazie Genno. :ueue:
Lo script batch in confronto ad una montagna di merda di un grasso mammuth che soffre di diarrea fa decisamente più schifo :facepalm:
Cambia per ogni sistema Windows che testo :facepalm:

*

Offline TonyWhite

  • Apostolo dello SPAM
  • ********
  • 32.474
  • 195
    • Se proprio non hai un cazzo da fare...
Re:[Java] - Applicazioni portable
« Risposta #4 il: 04 Aprile 2012, 14:57:40 »
Lo sto provando. Vediamo un po' :pipp:

*

Offline the_original_g

  • ******
  • 7.618
  • 104
  • シェモキレッジェ
Re:[Java] - Applicazioni portable
« Risposta #5 il: 04 Aprile 2012, 14:58:29 »
La combinazione dei due rende la distribuzione di un programma java non più difficile di quella di un programma .net, con la differenza che senza il secondo lo distribuisci senza il minimo problema anche sui sistemi veramente operativi :asd:
J:
unita' 4/1981
comp: 7.99%

*

Offline TonyWhite

  • Apostolo dello SPAM
  • ********
  • 32.474
  • 195
    • Se proprio non hai un cazzo da fare...
Re:[Java] - Applicazioni portable
« Risposta #6 il: 04 Aprile 2012, 18:44:35 »
Il primo mi piace e mi hai risparmiato mezza giornata di lavoro +1 :gtfo:
Mi vedrò il secondo con più calma :beer: