我正在尝试在 Windows 7 下的计算机上用法语编译一些 java 文件;我想我在文件结尾方面遇到了一些麻烦......
第一步,我生成要编译的文件列表:
dir src\*.java /B/S > javasrc.tmp~
它将在文件“javasrc.tmp~”中逐行写入src目录下java文件的完整路径(递归)。就我而言,我有:
C:\Users\Alexandre\Développement\Java\src\testA.java
C:\Users\Alexandre\Développement\Java\src\testB.java
[...]
(请注意,我的完整路径中有一个重音字母)
第二步,我使用以下命令编译所有源文件:
"%JAVA_HOME%\bin\javac.exe" @javasrc.tmp~
我收到此错误:
javac: file not found: C:\Users\Alexandre\Développement\Java\src\testA.java
在 Notepad++ 中打开 javasrc.tmp~ 文件时,该文件显示为:
C:\Users\Alexandre\D,veloppement\Java\src\testA.java
C:\Users\Alexandre\D,veloppement\Java\src\testB.java
[...]
重音字母显示为逗号;我必须选择 OEM 863 文件编码才能正确显示文件内容。
那么如何解决我的问题呢? (我在 bat 文件中使用这些命令作为自动化过程)。
谢谢。
最佳答案
最好的方法是更改为 ant 或 maven,而不是 bat 文件。它更标准,也更便携。
一个基本的 ant 文件将被命名为 build.xml,看起来像这样:
<project name="My Project Name Here" basedir="." default="main">
<property name="lib.dir" value="lib"/>
<path id="classpath">
<fileset dir="${lib.dir}" includes="**/*.jar"/>
</path>
<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="My Main Class Name Here"/>
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath"/>
</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 fork="true" classname="${main-class}">
<classpath>
<path refid="classpath"/>
<path location="${jar.dir}/${ant.project.name}.jar"/>
</classpath>
<arg value="RIMM" />
</java>
</target>
<target name="clean-build" depends="clean,jar"/>
<target name="main" depends="clean,run"/>
</project>
关于javac @<opiton_file> 和编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14217779/