1

我正在尝试在我的计算机上用法语在 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 文件中的自动化过程)。

谢谢你。

4

1 回答 1

0

最好的方法是更改​​为 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>
于 2013-01-08T15:07:51.153 回答