Ant脚本生成的Jar不支持用户输入 类文件是
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class LogClass {
public static void main(String argsp[]) throws IOException {
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(System.in));
System.out.println(bufferedReader.readLine());
}
}
build.xml是
<project name="HelloWorld" basedir="." default="main">
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.dir" value="${build.dir}/jar"/>
<property name="main-class" value="LogClass"/>
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}"/>
</target>
<target name="jar" depends="compile">
<mkdir dir="${jar.dir}"/>
<jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
<manifest>
<attribute name="Main-Class" value="${main-class}"/>
</manifest>
</jar>
</target>
<target name="run" depends="jar">
<java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/>
</target>
<target name="clean-build" depends="clean,jar"/>
<target name="main" depends="clean,run"/>
我正在使用带有JDK 1.8的eclipse luna最新版本。 运行构建文件jar后成功创建,但在运行jar时,在eclipse上运行时不支持用户输入。 命令提示符支持用户输入,但它不支持externat liberary。 请帮忙。 我的项目需要用户输入和外部自由。
答案 0 :(得分:1)
当您从控制台运行时,您可能使用java可执行文件,并且System.in(通常代表控制台)可用,因为控制台本身显然是可用的。当您从Eclipse运行时,您可能使用javaw可执行文件,它运行仅图形模式,即没有控制台。外部库无法工作的原因是你没有在jar的类路径上。修改清单以包含它,或将正确的类路径指定为命令行参数。
答案 1 :(得分:1)
主要问题是你正在用fork="true"
执行你的jar文件,这导致Ant在Ant的子进程中运行你的应用程序,因此没有控制台可用于它,标准输入也不会
我看到了两种可能的解决方法:使用fork="false"
运行应用程序jar或使用GUI对话框获取输入,例如使用JOptionPane,而不是从System.in
获取输入。