abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 11:44 | Nová verze

    Byla vydána nová verze 25.05.11 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. Nejnovější Shotcut je již vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.

    Ladislav Hagara | Komentářů: 0
    dnes 11:11 | Nová verze

    Svobodný elektronický platební systém GNU Taler (Wikipedie, cgit) byl vydán ve verzi 1.0. GNU Taler chrání soukromí plátců a zároveň zajišťuje, aby byl příjem viditelný pro úřady. S vydáním verze 1.0 byl systém spuštěn ve Švýcarsku.

    Ladislav Hagara | Komentářů: 2
    dnes 00:55 | Pozvánky

    Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 209. brněnský sraz, který proběhne tento pátek 16. května od 18:00 ve studentském klubu U Kachničky na Fakultě informačních technologií Vysokého učení technického na adrese Božetěchova 2/1. Jelikož se Brno stalo jedním z hlavních míst, kde se vyvíjí open source knihovna OpenSSL, tentokrát se OpenAlt komunita potká s komunitou OpenSSL. V rámci srazu Anton Arapov z OpenSSL

    … více »
    Ladislav Hagara | Komentářů: 0
    dnes 00:22 | Komunita

    GNOME Foundation má nového výkonného ředitele. Po deseti měsících skončil dočasný výkonný ředitel Richard Littauer. Vedení nadace převzal Steven Deobald.

    Ladislav Hagara | Komentářů: 3
    10.5. 15:00 | Zajímavý článek

    Byl publikován přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie) za uplynulé dva měsíce. Servo zvládne už i Gmail. Zakázány jsou příspěvky generované pomocí AI.

    Ladislav Hagara | Komentářů: 12
    9.5. 17:22 | Nová verze

    Raspberry Pi Connect, tj. oficiální služba Raspberry Pi pro vzdálený přístup k jednodeskovým počítačům Raspberry Pi z webového prohlížeče, byla vydána v nové verzi 2.5. Nejedná se už o beta verzi.

    Ladislav Hagara | Komentářů: 4
    9.5. 15:22 | Komunita

    Google zveřejnil seznam 1272 projektů (vývojářů) od 185 organizací přijatých do letošního, již jednadvacátého, Google Summer of Code. Plánovaným vylepšením v grafických a multimediálních aplikacích se věnuje článek na Libre Arts.

    Ladislav Hagara | Komentářů: 0
    8.5. 19:22 | Nová verze

    Byla vydána (𝕏) dubnová aktualizace aneb nová verze 1.100 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.100 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    8.5. 18:00 | Nová verze

    Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.5.

    Ladislav Hagara | Komentářů: 0
    8.5. 01:22 | Nová verze Ladislav Hagara | Komentářů: 0
    Jaký filesystém primárně používáte?
     (57%)
     (1%)
     (8%)
     (22%)
     (4%)
     (2%)
     (3%)
     (1%)
     (1%)
     (3%)
    Celkem 588 hlasů
     Komentářů: 26, poslední 8.5. 09:58
    Rozcestník

    Dotaz: spuštění java příkazu pomocí shell scriptu

    4.4.2008 12:25 Pev | skóre: 28
    spuštění java příkazu pomocí shell scriptu
    Přečteno: 1020×
    Dobrý den,

    snažím se pustit tento příkaz ze scriptu
    java "-Dahoj=x wee" -cp .:lib/* utils.keystore.tmp.TestConfigKeystore
    
    Ve scriptu tedy mám:
    echo java \"-Dahoj=x  wee\" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore
    java \"-Dahoj=x  wee\" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore
    
    Problém je, že skript sice vypíše text (java "-Dahoj=x wee" -cp .:lib/* utils.keystore.tmp.TestConfigKeystore), kt. vložený do terminálu jde spustit, ale samotné spuštění ze scriptu skonči chybou:
    Exception in thread "main" java.lang.NoClassDefFoundError: "-Dahoj=x
    
    Pozn: účelem je předat java system property, kt. obsahuje mezeru a proto by měla být zapsána takto: "-Dahoj=x wee" (kde dát uvozovky jsem čerpal odsud).

    Díky za tipy.

    Odpovědi

    Heron avatar 4.4.2008 12:33 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    "-Dahoj=x wee"

    -D je přepínač, zkuste dát ty uvozoky až za něj, tedy -D"ahoj=a hoj".

    4.4.2008 12:39 Pev | skóre: 28
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    To je právě to... co už jsem taky zkoušel předtím než jsem napsal
    echo java -D\"ahoj=x  wee\" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore
    java -D\"ahoj=x  wee\" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore
    
    a dá to výstup
    java -D"ahoj=x wee" -cp .:lib/* utils.keystore.tmp.TestConfigKeystore
    Exception in thread "main" java.lang.NoClassDefFoundError: wee"
    
    Jinak ten příkaz java -D"ahoj=x wee" -cp .:lib/* utils.keystore.tmp.TestConfigKeystore spustit opět jde, takže ten samý problém.

    Můj první příklad mi přišel taky nelogický, proto jsem rovnou uváděl ten link, odkud jsem čerpal.
    Heron avatar 4.4.2008 12:36 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    A také se mi tam nelíbí ta lomítka.
    4.4.2008 12:45 Pev | skóre: 28
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    Aha, tak tohle ve skriptu funguje
    java -D"ahoj=x  wee" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore
    java "-Dahoj=x  wee" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore
    
    Ale abych byl přesnější, potřebuju spustit tento skript (z důvodů, jež nechci rozepisovat, ale proto tam jsou ta lomítka):
    i=' "-Dahoj=x  wee" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore'
    echo java $i
    java $i
    
    a ten dá výstup java "-Dahoj=x wee" -cp .:lib/* utils.keystore.tmp.TestConfigKeystore Exception in thread "main" java.lang.NoClassDefFoundError: "-Dahoj=x

    Stejný výstup dá i skript
    i=" \"-Dahoj=x  wee\" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore"
    echo java $i
    java $i
    
    Heron avatar 4.4.2008 13:11 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    Tak tohle vypadá na problém v expanzi uvozovek a escape znaků v bashi. V tom se příliš nevyznám. Ale tohle je funkční:
    i="-Dahoj=a hoj -Dcau=c a u"
    echo $i
    java "$i" Prop
    
    Properties se předají.
    4.4.2008 13:34 Pev | skóre: 28
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    Jo díky, to opravdu jede.

    Zajímavé je, že tohle jede
    i="-Dahoj=x  wee"
    j=" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore"
    java "$i" $j
    
    ale tohle už ne
    i="-Dahoj=x  wee"
    j=" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore"
    java "$i" "$j"
    
    4.4.2008 13:59 alik
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    je to prirozene, ve druhem pripade se procesu predaji pouze dva parametry, nebot mezery v promenne j nejsou interpretovany jako oddelovac parametru - to je ostatne presne ucel tech uvozovek.

    jen poznamka - porovnavani s tim co vypise echo je v techto situacich velmi zavadejici, protoze tam hranice parametru nejsou videt.
    Heron avatar 4.4.2008 14:09 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    V případě spouštění bash -x ano, první řádek skriptu by vydadal takto:
    #!/bin/bash -x
    11.4.2008 08:49 Pev | skóre: 28
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    Ne, tak takhle volání sice neskončí chybou, ale misto 2 properties se předa jedna ahoj s hodnotou "a hoj -Dcau=c a u".

    Takže se budou muset predávat proměnné zvlášť (a to je trochu komplikované tím, že nevím, kolik těch proměnných bude).

    Je celý ten problém problémem javy nebo bashe?
    11.4.2008 14:32 Jiří Tušla
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    S tímhle se předává libovolnej počet uživatelsky definovanejch proměnnejch

    #!/bin/bash 
    params="";
    for i in `seq 1 10`;
    do
            params="${params} \"-Dparam${i}=value with space ${i}\""
    done
    echo $params
    eval "java $params -cp . Main"
    Kód příslušného testovacího programu v Javě je tenhle:

    import java.util.Enumeration;
    import java.util.Properties;
    public class Main {   
        public static void main(String[] args) {
            Properties params = System.getProperties();
            Enumeration keys = params.propertyNames();
            while (keys.hasMoreElements()) {
                String key = (String) keys.nextElement();
                System.out.println(key + " => " + params.getProperty(key));
            }
        }
    }
    
    11.4.2008 18:24 Pev | skóre: 28
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    Díky za tip.

    Já to nakonec vyřešil pomocí polí. Vůbec jsem netušil, že jdou v bashi používat. Pak se proste vezme velikost pole a nemusí se dávat dostatečně velký počet běhů při for (v mém připadě jsem uvažoval o hodnotě 100, s tím, že v některých skriptech by ten běh nebyl nutný vůbec).

    Též jiná možnost volání cyklu for mě překvapila.
    
    POLE=("prvni prvek" "druhy prvek")
    for ((i=0; i<${#POLE[*]}; $i++)); do
    ... něco s prvkem $POLE[$i]
    done
    
    11.4.2008 20:22 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    POLE=("prvni prvek" "druhy prvek")
    for ((i=0; i<${#POLE[@]}; i++)); do
    ... něco s prvkem ${POLE[$i]}
    done

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.