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 05:22 | Komunita

    Přímý přenos (YouTube) z konference LinuxDays 2025, jež probíhá tento víkend v Praze v prostorách FIT ČVUT. Na programu je spousta zajímavých přednášek.

    Ladislav Hagara | Komentářů: 0
    včera 22:44 | IT novinky

    V únoru loňského roku Úřad pro ochranu osobních údajů pravomocně uložil společnosti Avast Software pokutu 351 mil. Kč za porušení GDPR. Městský soud v Praze tuto pokutu na úterním jednání zrušil. Potvrdil ale, že společnost Avast porušila zákon, když skrze svůj zdarma dostupný antivirový program sledovala, které weby jeho uživatelé navštěvují, a tyto informace předávala dceřiné společnosti Jumpshot. Úřad pro ochranu osobních údajů

    … více »
    Ladislav Hagara | Komentářů: 1
    včera 19:00 | Nová verze

    Google Chrome 141 byl prohlášen za stabilní. Nejnovější stabilní verze 141.0.7390.54 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 21 bezpečnostních chyb. Za nejvážnější z nich (Heap buffer overflow in WebGPU) bylo vyplaceno 25 000 dolarů. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    včera 17:11 | Upozornění

    eDoklady mají kvůli vysoké zátěži technické potíže. Ministerstvo vnitra doporučuje vzít si sebou klasický občanský průkaz nebo pas.

    Ladislav Hagara | Komentářů: 4
    včera 17:00 | Komunita

    Novým prezidentem Free Software Foundation (FSF) se stal Ian Kelling.

    Ladislav Hagara | Komentářů: 1
    včera 14:33 | Komunita

    Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za září (YouTube).

    Ladislav Hagara | Komentářů: 0
    včera 12:33 | Upozornění

    Vyšla kniha Počítačové programy a autorské právo. Podle internetových stránek nakladatelství je v knize "Významný prostor věnován otevřenému a svobodnému softwaru, jeho licencím, důsledkům jejich porušení a rizikům „nakažení“ proprietárního kódu režimem open source."

    javokajifeng | Komentářů: 0
    včera 01:11 | Bezpečnostní upozornění

    Red Hat řeší bezpečnostní incident, při kterém došlo k neoprávněnému přístupu do GitLab instance používané svým konzultačním týmem.

    Ladislav Hagara | Komentářů: 0
    2.10. 23:33 | Nová verze

    Immich byl vydán v první stabilní verzi 2.0.0 (YouTube). Jedná se o alternativu k výchozím aplikacím od Googlu a Applu pro správu fotografií a videí umožňující vlastní hosting serveru Immich. K vyzkoušení je demo. Immich je součástí balíčků open source aplikací FUTO. Zdrojové kódy jsou k dispozici na GitHubu pod licencí AGPL-3.0.

    Ladislav Hagara | Komentářů: 2
    2.10. 22:33 | IT novinky

    Český telekomunikační úřad vydal zprávy o vývoji cen a trhu elektronických komunikací se zaměřením na rok 2024. Jaká jsou hlavní zjištění? V roce 2024 bylo v ČR v rámci služeb přístupu k internetu v pevném místě přeneseno v průměru téměř 366 GB dat na jednu aktivní přípojku měsíčně – celkově jich tak uživateli bylo přeneseno přes 18 EB (Exabyte). Nejvyužívanějším způsobem přístupu k internetu v pevném místě zůstal v roce 2024 bezdrátový

    … více »
    Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (38%)
     (46%)
     (14%)
     (16%)
     (18%)
     (14%)
     (18%)
     (15%)
     (14%)
    Celkem 169 hlasů
     Komentářů: 11, poslední včera 07:30
    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: 1026×
    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.