作者ntouckcm ()
看板java
标题[问题] Java呼叫Java
时间Sat Jul 24 01:44:28 2010
请问一下
我想要写一个java project呼叫三个java project。
import java.io.*;
public class Run_test
{
boolean the_com(Process p) throws IOException
{
String s;
boolean error = false;
BufferedReader err = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while((s = err.readLine())!= null)
{
System.out.print(s);
error = true;
}
if(error)
return false;
return true;
}
void the_run(Process p) throws IOException
{
String s;
BufferedReader out=new BufferedReader(new InputStreamReader(p.getInputStream()));
while((s=out.readLine())!= null)
System.out.print(s);
BufferedReader err = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while((s = err.readLine())!= null)
System.out.print(s);
}
public static void main(String args[]) throws IOException
{
String path = args[0];
String filename = args[1];
Runtime r = Runtime.getRuntime();
Process p = r.exec("javac "+path+filename+".java" ); //javac指令
Run_test test = new Run_test();
Process p2;
String s;
if(!test.the_com(p))
System.out.println("\n ~~~~~~~error~~~~~~~~~~~");
else
{
System.out.println("\n ~~~~~~~success~~~~~~~");
p2 = r.exec("java -classpath "+path+" "+filename); //java指令
test.the_run(p2);
}
}
}
用javac产生class档。用java指令产生 编译出结果。
我的问题是:
1.如果project 里有很多java档。那是否就要一个档一个档写。
譬如:
path:
E:\code\ProgPattern_05\ProgPattern_05\src\
filename:
Main CodeTree EmptyListException FileHandle JavaLexer...
这样很麻烦~有没有可能直接全部的JAVA档编译~
我试过filename:*
没办法成功。
2.如果要呼叫的java project有外部import的package,要怎麽加到指令编译成功。
譬如:import antlr;
3.不知道是否有更好的写法~
谢谢各位大大~^o^
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.116.164.174
1F:推 superlubu:API DOC: java.io.File, listFiles() method 07/24 07:16
2F:→ ntouckcm:多谢~那麽如果要呼叫的JAVA档有外部import的package 07/24 14:08
3F:→ ntouckcm:要怎麽在javac上做连结呢 ???? 07/24 14:10
4F:→ ntouckcm:若使用eclipse是加入Add External JARs,就可以编译成功 07/24 14:14
5F:→ tkcn:平常指令怎麽下,就怎麽在 java 里呼叫 07/24 14:14
6F:→ ntouckcm:我都是用eclipse编译~没有下过指令Orz 07/24 14:33
7F:→ tkcn:所以你应该去学学如何下指令 07/24 14:49