Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Script Perl da Java e creazione jar file

    ciao a tutti
    ho un grosso problema da cui non riesco ad uscire.. la situazione è questa:

    ho scaricato il codice di un programma su cui devo effettuare delle modifiche; il programma in questione serve per estrarre delle informazioni da file di testo e si basa su una libreria esterna per effettuare il processo di POS tagging (part of speech) per la lingua inglese, cioè per classificare una parola come nome, verbo, preposizione etc...
    poichè sono interessata a eseguire lo stesso per la lingua italiana ho dovuto aggiungere un tool per fare questo;
    problema: questo tool è composto da script Perl e Batch
    soluzione: ho richiamato tali script usando Runtime.getRuntime().exec() e mettendo il percorso relativo, ad esempio:

    Runtime.getRuntime().exec("perl lib/TreeTagger/cmd/tokenize.pl -i -a lib/TreeTagger/lib/italian-abbreviations "+tempInput);

    Runtime.getRuntime().exec("lib/TreeTagger/bin/tree-tagger lib/TreeTagger/lib/italian.par -token -lemma -sgml -no-unknown "+tempTokenized);


    dopo aver fatto le opportune modifiche ho creato il file jar con il plugin FatJar e fin qui tutto ok..
    ho creato il mio nuovo progetto, ho importato il mio jar, ho richiamato il metodo in cui eseguivo gli script ma qui nasce il problema!!

    ovviamente gli script non vengono trovati e mi genera l'eccezione
    Cannot run program "lib/TreeTagger/bin/tree-tagger": CreateProcess error=2, Impossibile trovare il file specificato
    come posso specificare il percorso giusto quando eseguo l'exec() in modo che poi quando importo il jar venga trovato lo script?

    se può essere d'aiuto, la struttura delle directory è la seguente:
    progetto1
    --src
    --bin
    --lib
    ----TreeTagger
    ------cmd
    --------tokenize.pl
    ------bin
    --------tree-tagger.exe
    (da questo progetto genero il file progetto1.jar)

    progetto2
    --src
    --bin
    --lib
    ----progetto1
    ------progetto1.jar


    spero di essere stata chiara...
    please... help me!!!

  2. #2
    ho lavorato ancora un po' a questa questione...
    credo di aver capito qual è il problema ma non so come risolverlo :master:

    in pratica devo trovare il modo di specificare nella stringa passata al metodo exec() i path corretti dei nomi degli script, dato che non vengono trovati nè tokenize.pltree-tagger.exe

    codice:
    Runtime.getRuntime().exec("perl tokenize.pl -i -a italian-abbreviations "+tempInput);
    Runtime.getRuntime().exec("tree-tagger italian.par -token -lemma -sgml -no-unknown "+tempTokenized);
    come posso fare??

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da projectRevEng
    in pratica devo trovare il modo di specificare nella stringa passata al metodo exec() i path corretti dei nomi degli script
    Il problema non è tanto passarlo fisicamente alla exec() .... la questione è cosa "sai" dei path e dove/come vuoi codificarli es:

    a) In un file di configurazione?
    b) In una variabile di ambiente?
    c) Stabilendo un percorso fisso che sia relativo a un path (noto e/o determinabile) della tua applicazione o del sistema? (es. path di un tuo jar? directory corrente? la "home" dell'utente?)
    d) Chiesto in input all'utente?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    diciamo nel modo più semplice ma anche più portabile possibile
    nel senso che, come ho scritto nel primo post, conosco qual è il loro percorso ed ho provato ad inserire quello relativo nel seguente modo:
    codice:
    Runtime.getRuntime().exec("perl lib/TreeTagger/cmd/tokenize.pl -i -a lib/TreeTagger/lib/italian-abbreviations "+tempInput);
    Runtime.getRuntime().exec("lib/TreeTagger/bin/tree-tagger lib/TreeTagger/lib/italian.par -token -lemma -sgml -no-unknown "+tempTokenized);
    il problema è che finchè lo eseguo nel progetto1 tutto ok, mentre se lo eseguo dal progetto2 il percorso è sbagliato dato che cambia la user.dir

    ora, escludendo la richiesta del path all'utente, qual è il modo più facile per poterlo codificare correttamente?

  5. #5


    qualche altro consiglio?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.