|
| cdrecord + java Fra : torben |
Dato : 19-08-05 20:32 |
|
Jeg er ved at lave noget til hjemmebrug, hvor jeg fra java skal kalde
programmet cdrecord (et cd-brænder program underlinux). Det kan jeg ikke
få til at virke.
En af de mere fancy thing er:
Lave et script mitProgram:
#!/bin/bash
echo $*
olddir=`pwd`
cd $1
shift;
echo $*
cdblocks=`/usr/bin/mkisofs -dvd-video -r -print-size -quiet $*`
echo $cdblocks
mkisofs -dvd-video -r $* | cdrecord dev=0,0,0 speed=16 -dao
tsize=${cdblocks}s -
cd $olddir
Basalt set laves et kald som "cdrecord min.iso"
Herefter danne en fil sti/til/temp med indholdet:
sti/til/mitProgram film1.mpeg film2.mpeg
Fra Java gør jeg nu ølgende:
Runtime runtime=Runtime.getRuntime();
Process proces=runtime.exec("at now+0min -f sti/til/temp"+,null,
new File(library));
Hvis jeg fra en terminal skriver "at now+0min -f sti/til/temp" virker
det hele fint. Men ikke fra java. Nogen ideer til, hvorfor det går galt ?
Med venlig hilsen
Torben Frøberg
| |
Arne Vajhøj (19-08-2005)
| Kommentar Fra : Arne Vajhøj |
Dato : 19-08-05 20:44 |
|
torben wrote:
> Jeg er ved at lave noget til hjemmebrug, hvor jeg fra java skal kalde
> programmet cdrecord (et cd-brænder program underlinux). Det kan jeg ikke
> få til at virke.
> Fra Java gør jeg nu ølgende:
>
> Runtime runtime=Runtime.getRuntime();
> Process proces=runtime.exec("at now+0min -f sti/til/temp"+,null,
> new File(library));
>
> Hvis jeg fra en terminal skriver "at now+0min -f sti/til/temp" virker
> det hele fint. Men ikke fra java. Nogen ideer til, hvorfor det går galt ?
Prøv:
String[] cmd = { "at", "now+0min", "-f", "sti/til/temp" };
Runtime runtime=Runtime.getRuntime();
Process proces=runtime.exec(cmd,null,new File(library));
Arne
| |
Thomas Bendsen (19-08-2005)
| Kommentar Fra : Thomas Bendsen |
Dato : 19-08-05 20:54 |
|
torben wrote:
> Jeg er ved at lave noget til hjemmebrug, hvor jeg fra java skal kalde
> programmet cdrecord (et cd-brænder program underlinux). Det kan jeg ikke
> få til at virke.
>
>
>
> Hvis jeg fra en terminal skriver "at now+0min -f sti/til/temp" virker
> det hele fint. Men ikke fra java. Nogen ideer til, hvorfor det går galt ?
>
> Med venlig hilsen
> Torben Frøberg
Hej Torben
Jeg har selv leget med noget tilsvarende engang, og fandt ud af at visse
tegn åbenbart gav problemer. I hjælpefilen til det jeg lavede har jeg
angivet tegnene "*~. Om nogen tilsvarende kan være skyld i dit problem
skal jeg ikke kunne sige. Under alle omstændigheder kan du måske løse
det ved at lave et shellscript der indeholder linien:
"at now+0min -f sti/til/temp"
og så i java skrive:
Process proces=runtime.exec("bash mitshellscript",null,new File(library));
Bemærk dog at min viden om Runtime klassen kan ligge på et meget lille
sted, så mit svar kan meget vel være helt i skoven.
Med venlig hilsen
Thomas Bendsen
| |
Max Rotvel (20-08-2005)
| Kommentar Fra : Max Rotvel |
Dato : 20-08-05 23:02 |
|
On Fri, 19 Aug 2005 21:31:46 +0200, torben <torben@frojonck.dk> wrote:
> Runtime runtime=Runtime.getRuntime();
> Process proces=runtime.exec("at now+0min -f sti/til/temp"+,null,
Det er kun et gæt, men prøv med at
proces.waitFor() før
> new File(library));
--
Max - rotvel AT bolignet-aarhus DOT dk
| |
torben (21-08-2005)
| Kommentar Fra : torben |
Dato : 21-08-05 22:47 |
|
torben wrote:
> Jeg er ved at lave noget til hjemmebrug, hvor jeg fra java skal kalde
> programmet cdrecord (et cd-brænder program underlinux). Det kan jeg ikke
> få til at virke.
>
> En af de mere fancy thing er:
>
> Lave et script mitProgram:
>
> #!/bin/bash
> echo $*
> olddir=`pwd`
> cd $1
> shift;
> echo $*
> cdblocks=`/usr/bin/mkisofs -dvd-video -r -print-size -quiet $*`
> echo $cdblocks
> mkisofs -dvd-video -r $* | cdrecord dev=0,0,0 speed=16 -dao
> tsize=${cdblocks}s -
> cd $olddir
>
> Basalt set laves et kald som "cdrecord min.iso"
>
> Herefter danne en fil sti/til/temp med indholdet:
> sti/til/mitProgram film1.mpeg film2.mpeg
>
>
> Fra Java gør jeg nu ølgende:
>
> Runtime runtime=Runtime.getRuntime();
> Process proces=runtime.exec("at now+0min -f sti/til/temp"+,null,
> new File(library));
>
>
>
> Hvis jeg fra en terminal skriver "at now+0min -f sti/til/temp" virker
> det hele fint. Men ikke fra java. Nogen ideer til, hvorfor det går galt ?
Er kommet frem til, at jeg forsøger at pipe fra mkisofs direkte over i
cdrecord (mkisofs fil1 file | cdrecord -). Af en eller anden grund kan
man ikke det.
Hvis jeg i stedet først
mkisofs -o min.iso fil1 fil2
og derefter
cdrecord min.iso
har jeg ingen problemer.
Det er bare lidt uheldigt, at denne løsning kræver en temporær fil
min.iso, som je godt kan være 4 GB.
Men tak for forslagene.
Mvh. Torben
| |
|
|