在WebApp(tomcat环境)中使用Java执行gradle命令来打包APK
我想使用一个网页来打包我项目的apk,但在servlet中,每次java执行到“./gradlew assembleRelease"命令就要报错,说什么端口已经被占用。开发环境是idea。
报的错是:
错误: 代理抛出异常错误: java.rmi.server.ExportException: Port already in use:
1099; nested exception is:
java.net.BindException: Address already in use
下面是我执行打包命令的方法,即runCommands方法。进入for循环开始执行命令行。
public static String orders[] = {"cd /Users/whoami/Downloads/WebSocketDemo","./gradlew assembleRelease"};
public static void runCommands(String[] orders) throws IOException {
File wd = new File("/bin");
Process proc = null;
try {
proc = Runtime.getRuntime().exec("/bin/bash", null, wd);
} catch (IOException e) {
e.printStackTrace();
}
if (proc != null) {
// BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
SequenceInputStream sis = new SequenceInputStream(proc.getInputStream(), proc.getErrorStream());
InputStreamReader isr = new InputStreamReader(sis, "UTF-8");
BufferedReader br = new BufferedReader(isr);
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())), true);
for (String s : orders) {
System.out.println("command is: " + s);
out.println(s);
}
out.println("exit");
try {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
if (line.equals("BUILD SUCCESSFUL")) {
return;
}
}
proc.waitFor();
br.close();
sis.close();
out.close();
proc.destroy();
} catch (Exception e) {
e.printStackTrace();
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
大兄弟可以用jetty,是没有问题的.
哥,在WebApp(tomcat环境)中使用Java执行gradle命令来打包APK
这个问题解决了吗? 紧急求助啊