"Lars Dam" <lars_simple_spam_protection_dam@post2.tele.dk> skrev i en
meddelelse news:o9p6htc0uet1h87tqofpssibksavvh8oi2@4ax.com...
> On Tue, 29 May 2001 06:50:29 GMT, Torben Lund <torben@pet.auh.dk>
> wrote:
>
> >Hej,
> >
> >Kan man kalde et andet javaprogram fra et kørende? Det jeg har brug for
> >er et kald med 3 parametre: "java program parm1 parm2 parm3". Jeg har
> >forsøgt at importere hele pakken og lave et nyt objekt der kaldes med
> >parametrene, men javac giver fejlmeddelsen "cannot resolve symbol"; path
> >skulle være OK og alle classes er public.
> >
> >Det er sikkert en detalje jeg igen har overset.....
>
> Hvorfor bare ikke kalde main() i dit andet program? I.e.
>
> String args[] = {"parm1","parm2","parm3"};
> OtherClass.main( args );
>
> Det kræver selvfølgeligt at path'en er sat korrekt op.
> Dette indebærer også at det andet program kører i samme JVM.
>
> Alternativt kan du kalde:
>
> java.lang.Runtime.exec( "Java OtherClass parm1 parm2 parm3" );
> Dette indebærer at der bliver lavet en ny JVM.
En enkelt ulempe kan være, at det ikke virker under Microsoft's VM, idet
java-fortolkeren her hedder jview - der skulle kommandoen være
java.lang.Runtime.exec( "Jview OtherClass parm1 parm2 parm3" )
Du er også langt mere sårbar for ondsindede data - hvis nu fx parm3 er et
filnavn som indtastes på en website, kunne jeg måske indtaste brugernavnet
dummyFile.txt ; rm -rf *
Hvis det køres på unix bliver der nu kørt antagelig to kommandoer - dels det
egentlige program, dels en rask lille oprydning
Det samme kan selvfølgelgi gøres på NT - og langt mere subtile angreb er
også mulige.
Hver gang du laver en Runtime.exec skal du være MEGET sikker på hvad der kan
blive sendt - ondsindede data er et af de almindeligste sikkerhedshuller!
>
> >
> >Venlig hilsen,
> >
> >Torben Lund
>
> vh. ld
>
>
> --
> "Time is the fire in which we burn"