Avatar billede dennism Nybegynder
12. maj 2010 - 14:13 Der er 8 kommentarer og
1 løsning

Java: Compiling med absolut sti

Jeg sidder med et bat-script som skal compile nogle java-filer. Normalt vil jeg bare bruge:
  javac sti/til/mappe/*.java

Problemet er bare, at stien godt kan være f.eks.:
  c:/my documents/mappe

Hvilket betyder, at jeg må pakke det ind i citationstegn:
  javac "c:/my documents/mappe/*.java"

Problemet er så bare, at javac så ikke længere kan håndtere *.

Nogen der har en løsning på det?

På forhånd tak for svaret.
Avatar billede arne_v Ekspert
12. maj 2010 - 14:34 #1
Hvad med at kyle BAT derhen hvor pebret gror og bruge ant ?

:-)
Avatar billede dennism Nybegynder
12. maj 2010 - 14:44 #2
Det er ikke muligt. Det er fordi programmet kan køres via commando prompten, da den er med i Path i Environment. Det skal compiles med noget i denne stil:
  javac %APP_HOME%/folder/*.java

Dette fungerer fint i mange tilfælde, men hvis stien i %APP_HOME% bl.a. indeholder et mellemrum som nævnt før, så fungerer det ikke. Og derfor må det omsluttes i citationstegn.
Avatar billede arne_v Ekspert
12. maj 2010 - 15:16 #3
Have a little faith !

:-)

C:\>set Z=C:\z z

C:\>javac C:\z z\*.java -d C:\z z
javac: invalid flag: C:\z
Usage: javac <options> <source files>
use -help for a list of possible options

C:\>dir C:\z z\*.class
The system cannot find the file specified.

C:\>javac "C:\z z\*.java" -d "C:\z z"
javac: file not found: C:\z z\*.java
Usage: javac <options> <source files>
use -help for a list of possible options

C:\>dir "C:\z z\*.class"
Volume in drive C is ARNEPC3_C
Volume Serial Number is E850-F261

Directory of C:\z z

File Not Found

C:\>call ant
Buildfile: build.xml

compile:
    [javac] Compiling 2 source files to C:\z z

BUILD SUCCESSFUL
Total time: 3 seconds
Volume in drive C is ARNEPC3_C
Volume Serial Number is E850-F261

Directory of C:\z z

12-05-2010  09:15              116 A.class
12-05-2010  09:15              116 B.class
              2 File(s)            232 bytes
              0 Dir(s)  48.823.693.312 bytes free

<project name="test" default="compile">
    <property environment="cmd"/>
    <target name="compile">
        <javac srcdir="${cmd.Z}" destdir="${cmd.Z}"/>
    </target>
</project>
Avatar billede dennism Nybegynder
12. maj 2010 - 16:36 #4
Jeg kan desværre ikke helt følge, hvor du vil hen. Men jeg kan desværre ikke bruge ant, da brugerne af programmet ikke skal være afhængige af, at det skal være installeret.
Avatar billede arne_v Ekspert
12. maj 2010 - 16:45 #5
Jeg har bare vist at det virker fint i ant.

Slutbrugerne skal vel ikke builde - men jeg kan så forstå at du skal lave noget library eller lignende for andre udviklere og at du kun vil forudsætte JDK og en kommando prompt - ikke ant.

Eller sagt på en anden måde - du har malet dig inde i et hjørne.

Det virker hvis du bruger dobbelt quotes og lister alle filerne.

Måske kan du også lave et loop som udfører javac for hver .java fil.
Avatar billede arne_v Ekspert
12. maj 2010 - 16:51 #6
Demo:

C:\>javac "C:\z z\A.java" "C:\z z\B.java" -d "C:\z z"

C:\>dir "C:\z z\*.class"
Volume in drive C is ARNEPC3_C
Volume Serial Number is E850-F261

Directory of C:\z z

12-05-2010  10:51              176 A.class
12-05-2010  10:51              176 B.class
              2 File(s)            352 bytes
              0 Dir(s)  48.815.394.816 bytes free

C:\>for %f in ("C:\z z\*.java") do javac "%f" -d "C:\z z"

C:\>javac "C:\z z\A.java" -d "C:\z z"

C:\>javac "C:\z z\B.java" -d "C:\z z"

C:\>dir "C:\z z\*.class"
Volume in drive C is ARNEPC3_C
Volume Serial Number is E850-F261

Directory of C:\z z

12-05-2010  10:51              176 A.class
12-05-2010  10:51              176 B.class
Avatar billede arne_v Ekspert
12. maj 2010 - 16:52 #7
BAT fil:

javac "%Z%\A.java" "%Z%\B.java" -d "%Z%"
dir "%Z%\*.class"
for %%f in ("%Z%\*.java") do javac "%%f" -d "%Z%"
dir "%Z%\*.class"
Avatar billede dennism Nybegynder
12. maj 2010 - 18:56 #8
Tak, den for-løkke var lige hvad jeg skulle bruge :)
Vil du smide et svar?
Avatar billede arne_v Ekspert
12. maj 2010 - 19:26 #9
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester