Alias i terminal for kompilering og kjøring

Alias i terminal for kompilering og kjøring

Innleggav tandberg » søn 10.10.2010 18:25

Hei

Jeg har gjort det slik at jeg har ei fil på skrivebordet som jeg skriver litt java i for å teste småtteri nå og da. Så har jeg prøvd å lage meg et par aliaser i .bash_profile, men får de ikke helt til å funkere. dvs jeg får kompileringa til å funke, men ikke kjøringa

Her er aliasene mine:
Kode: Merk alt
alias c='javac ~/Desktop/Testprogram.java'
alias r='java ~/Desktop/Testprogram'


Når jeg kjører c, så blir den kompilert og alt er bare fint, men når jeg kjører r så kommer denne feilmeldingen:
Kode: Merk alt
Exception in thread "main" java.lang.NoClassDefFoundError: /Users/tandberg/Desktop/Testprogram
Caused by: java.lang.ClassNotFoundException: .Users.tandberg.Desktop.Testprogram
   at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:248)


Hva er feil med r-aliaset mitt egentlig?

Takker for svar

Brukerens avatar
medlem i 208 måneder
 

Re: Alias i terminal for kompilering og kjøring

Innleggav vikingen1 » tir 13.09.2011 20:41

Det er ikke selve aliaset ditt som er galt, men javakommandoen. Når man får NoClassDefFoundError kan det være fordi classloaderen ikke finner programmet i class path'en. Altså at det ikke er nok å bare gi filbanen. Om du endrer aliaset ditt til:
Kode: Merk alt
alias r='java -classpath /home/BRUKER/Desktop/ Testprogram'

så tror jeg at det skal fungere.

Et tips istedenfor å bruke alias, er å bruke makefile. Da behøver man bare å skrive "make" for å kompilere alle filene, og eventuellt slik jeg har konfigurert det: "make do" for å kompilere alle filene, og deretter kjøre programmet. Eksempel på min makefile:
Kode: Merk alt
# Definerer parameter, kompilator og kjøreprogram
JFLAGS = -g
JC = javac
J = java

#
.SUFFIXES: .java .class

#
.java.class:
   $(JC) $(JFLAGS) $*.java

# Java filene som skal kompileres
CLASSES = \
   JavaFil1.java \
   JavaFil2.java \
        JavaFil3.java

#
default: classes

#
classes: $(CLASSES:.java=.class)

# Fjerner alle klassefiler
clean:
   $(RM) *.class

# Kompilerer alle nødvendige filer, og kjører programmet som er oppgitt
do: $(CLASSES:.java=.class)
   $(J) ProgramSomSkalKjores

Brukes ved å lagre denne teksten som "makefile" og legge den i mappa sammen med javafilene, og deretter bare skrive "make", "make do" eller "make clean".

Kilden til min java makefile er her: http://www.cs.swarthmore.edu/~newhall/u ... files.html . Her er det mye mer kommentarer som forklarer de forskjellige tinga.

Notat: Ser nå at den opprinnelige posten ble postet for nesten et år siden, så trådstarter har muligens ikke så mye bruk for dette svaret, men kanskje er det nyttig for andre :-)
medlem i 216 måneder
 


Returner til Java



Hvem er i Forumene

Registrerte brukere: Google [Bot]