2013-02-28 18 views
5

Programımı derleyebilmeli, ardından her seferinde ilk komut satırı argümanı olarak farklı bir .txt dosyasıyla 3 farklı kez çalıştırılmalı ve bunun tek bir "make" komutuyla yapılması gerekir. Şu anda ne var BuradaJava kodunu komut satırı argümanlarıyla derleyip çalıştıracak bir Makefile nasıl oluştururum?

javac MainDriver.java FSA.java State.java Transition.java 
java MainDriver test1.txt 
java MainDriver test2.txt 
java MainDriver test3.txt 

var:

JC = javac 
JCR = java 

.SUFFIXES: .java .class 
.java.class: 
    $(JC) $*.java 

CLASSES = \ 
    MainDriver.java \ 
    FSA.java \ 
    State.java \ 
    Transition.java 

default: classes 

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

clean: 
    $(RM) *.class *~ 
+0

yerine yapmak Apache Ant kullanarak düşünür müsünüz şöyle benim Makefile yapmak istiyorum ne için ilgili terminal komutları nelerdir? – beny23

cevap

2
JC = javac 
JCR = java 

.SUFFIXES: .java .class 
.java.class: 
    $(JC) $*.java 

CLASSES = \ 
    MainDriver.java \ 
    FSA.java \ 
    State.java \ 
    Transition.java 

TXT_FILES = \ 
    test1.txt \ 
    test2.txt \ 
    test3.txt \ 

default: classes exec-tests 

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

clean: 
    $(RM) *.class *~ 

exec-tests: classes 
    set -e; \ 
    for file in $(TXT_FILES); do $(JCR) MainDriver $$file; done; 


.PHONY: default clean classes exec-tests 
+0

Bunu kullanmayı denedim ve her test için aşağıdaki hata var: "Ana" java.lang.NoClassDefFoundError dizisindeki 'İstisna: test1/txt Neden Olduğu: java.lang.ClassNotFoundException: test1.txt \t de java.net java.lang de java.net.URLClassLoader.findClass (URLClassLoader.java:190) de java.security.AccessController.doPrivileged (Yerli Metodu) \t de $ 1.run (URLClassLoader.java:202) \t \t .URLClassLoader. ClassLoader.loadClass (ClassLoader.java:306) \t at sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:301) \t java.lang.ClassLoader.loadClass (ClassLoader.java:247) ' – soccercta100

+1

Oops gerçek ikiliyi kaçırdı. Cevabı güncellediniz. Tüm metin dosyalarını tüm ikili dosyaları çalıştırmak istediğinizi varsayalım. Bu doğru mu ? – Tuxdude

+1

Ayrıca set -e'yi ekledi, böylece ilk hatada durdu. Bu davranışı istemiyorsanız o satırı kaldırın. – Tuxdude

İlgili konular