|  | 		    
					
        
         
          
         
	
          | |  | 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
 
 
 |  |  | 
 |  |