【问题标题】:javac @<opiton_file> and encodingjavac @<opiton_file> 和编码
【发布时间】:2013-01-08 14:59:48
【问题描述】:

我正在尝试在我的电脑上编译一些法语 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 文件中的自动化过程)。

谢谢。

【问题讨论】:

  • Java 倾向于在 Windows 上使用默认的 ANSI 代码页。控制台使用 OEM 代码页。尝试使用 CHCP 将终端切换到 ANSI(例如,1252 用于西拉丁语。)
  • 是的!你是我的英雄;)它醒了!谢谢

标签: java compilation javac


【解决方案1】:

最好的方法是更改​​为 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>

【讨论】:

  • 好吧,你是对的,我可能必须使用 Ant 来编译我的 java 项目,而不是制作我可怕的 bat 工具。但我不想安装地球上所有可用的软件来做一点小事。我已经有 JDK 和 windows 下的原生​​ bat 文件处理。那一定够了!不过谢谢你的回复。
猜你喜欢
  • 2012-04-06
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
  • 2017-04-10
  • 1970-01-01
  • 1970-01-01
  • 2013-01-08
  • 1970-01-01
相关资源
最近更新 更多