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 01:33 | Komunita

    Zig Software Foundation stojící za programovacím jazykem Zig publikovala finanční zprávu za rok 2024. Současně s prosbou o finanční příspěvek.

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

    Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za srpen (YouTube). Vypíchnuta je podpora Tabulek Google, implementace Gamepad API a Cookie Store API nebo také podpora WebGL na Linuxu.

    Ladislav Hagara | Komentářů: 0
    včera 20:44 | Komunita

    openSUSE Leap 16, včetně Leap Micra 6.2+, nově nabízí 24 měsíců podpory pro každé vydání. To je dva roky aktualizací a stability, což z něj činí nejdéle podporovanou komunitní distribuci vůbec. Leap se tak stává ideální platformou pro všechny, kdo hledají moderní, stabilní a dlouhodobě podporovanou komunitní Linux distribuci.

    lkocman | Komentářů: 0
    včera 16:33 | Bezpečnostní upozornění

    Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) vydal dne 3. 9. 2025 VAROVÁNÍ před hrozbou v oblasti kybernetické bezpečnosti spočívající v předávání systémových a uživatelských dat do Čínské lidové republiky a ve vzdálené správě technických aktiv vykonávané z území Čínské lidové republiky. Varováním se musí zabývat povinné osoby podle zákona o kybernetické bezpečnosti.

    Ladislav Hagara | Komentářů: 27
    včera 11:55 | IT novinky

    Americká internetová společnost Google nemusí prodat svůj prohlížeč Chrome ani operační systém Android. Rozhodl o tom soud ve Washingtonu, který tak zamítl požadavek amerického ministerstva spravedlnosti. Soud ale firmě nařídil sdílet data s jinými podniky v zájmu posílení konkurence v oblasti internetového vyhledávání. Zároveň Googlu zakázal uzavírat dohody s výrobci mobilních a dalších zařízení, které by znemožňovaly

    … více »
    Ladislav Hagara | Komentářů: 3
    včera 11:33 | Humor

    Prvního září ozbrojení policisté zatkli na na londýnském letišti Heathrow scénáristu a režiséra Grahama Linehana, známého především komediálními seriály Ajťáci, Otec Ted nebo Black Books. Během výslechu měl 57letý Graham nebezpečně zvýšený krevní tlak až na samou hranici mrtvice a proto byl z policejní stanice převezen do nemocnice. Důvodem zatčení bylo údajné podněcování násilí v jeho 'vtipných' příspěvcích na sociální síti

    … více »
    Gréta | Komentářů: 83
    včera 10:22 | Pozvánky

    Studentská dílna Macgyver zve na další Virtuální Bastlírnu - pravidelné online setkání všech, kdo mají blízko k bastlení, elektronice, IT, vědě a technice. Letní prázdniny jsou za námi a je čas probrat novinky, které se přes srpen nahromadily. Tentokrát jich je více než 50! Těšit se můžete mimo jiné na:

    Hardware – Bus Pirate na ESP32, reverse engineering Raspberry Pi, pseudo-ZX-80 na RISC-V, PicoCalc, organizéry na nářadí z pěny nebo … více »
    bkralik | Komentářů: 0
    včera 03:11 | Nová verze

    Google Chrome 140 byl prohlášen za stabilní. Nejnovější stabilní verze 140.0.7339.80 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 6 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    včera 02:22 | Nová verze

    LeoCAD (Wikipedie) je svobodná multiplatformní aplikace umožňující také na Linuxu vytvářet virtuální 3D modely z kostek lega. Vydána byla verze 25.09. Zdrojové kódy a AppImage jsou k dispozici na GitHubu. Instalovat lze také z Flathubu.

    Ladislav Hagara | Komentářů: 2
    2.9. 21:00 | IT novinky

    RubyMine, tj. IDE pro Ruby a Rails od společnosti JetBrains, je nově zdarma pro nekomerční použití.

    Ladislav Hagara | Komentářů: 0
    Pro otevření více webových stránek ve webovém prohlížečí používám
     (82%)
     (8%)
     (2%)
     (3%)
     (4%)
     (1%)
    Celkem 139 hlasů
     Komentářů: 10, poslední dnes 10:16
    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: 1025×
    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.