原文地址: http://www.jxva.com/blog/personal-diary/change-the-google-app-engine's-javac-compiler-encoding.html
[ 2009-04-14 10:39:22 ] If you need, please marked as the origin url.
Google App Engine 自带的javac编译器默认是使用操作系统的编码,在Windows系统下常常会将jsp文件内容编译为乱码,通用情况下我们都采用UTF-8的统一编码,如何才能改变Google App Engine 自带的javac编译器编码呢?
主要采用如下几个步骤:
1.下载 Google App Engine SDK for java
2. 解压后在lib目录里面有一个appengine-tools-api.jar文件,解压提取出com.google.appengine.tools.admin.Application.class,通过jd-gui或jad反编译后,可以看到如下代码片段(红色部分为本人所加内容):
需要注意的几点:
1. 通过jd-gui或jad反编译时,并不能100%的保证Application.java源代码的正确性,本人是通过jd-gui与jad两者反编译再对比分析修改后才得到正确的Application.java源代码,为了免去大家反编译Application.class的麻烦,本人将Application.java与反编译好的Applcation.class发布到了网上供大家下载
下载 Application.java Application.class (JDK6编译)
2.为了避免编码带来的烦恼,建议大家在appengine-web.xml中的system-properties节点中加入如下代码:
主要采用如下几个步骤:
1.下载 Google App Engine SDK for java
2. 解压后在lib目录里面有一个appengine-tools-api.jar文件,解压提取出com.google.appengine.tools.admin.Application.class,通过jd-gui或jad反编译后,可以看到如下代码片段(红色部分为本人所加内容):
private void compileJavaFiles(String classpath, File classDir, AppAdminFactory.ApplicationProcessingOptions opts)
throws IOException{
statusUpdate("Compiling java files.");
ArrayList args = new ArrayList();
String javacCmd = opts.getJavaCompiler().getPath();
args.add(javacCmd);
args.add("-encoding");
args.add("UTF-8");
args.add("-classpath");
args.add(classpath.toString());
args.add("-d");
args.add(classDir.getPath());
for (Iterator i$ = new FileIterator(classDir).iterator(); i$.hasNext(); ) { File f = (File)i$.next();
if (f.getPath().toLowerCase().endsWith(".java"))
args.add(f.getPath());
}
if (args.size() == 7)
return;
Process javac = startProcess((String[])args.toArray(new String[0]));
int status = 1;
try {
status = javac.waitFor();
} catch (InterruptedException ex) {
}
if (status != 0)
throw new RuntimeException("Failed to compile java files.");
}
3. 将更改后的Application.java再重新编译为Application.class替换appengine-tools-api.jar中的Application.class,即可解决Google App Engine 自带的javac编译器的编码问题; 需要注意的几点:
1. 通过jd-gui或jad反编译时,并不能100%的保证Application.java源代码的正确性,本人是通过jd-gui与jad两者反编译再对比分析修改后才得到正确的Application.java源代码,为了免去大家反编译Application.class的麻烦,本人将Application.java与反编译好的Applcation.class发布到了网上供大家下载
下载 Application.java Application.class (JDK6编译)
2.为了避免编码带来的烦恼,建议大家在appengine-web.xml中的system-properties节点中加入如下代码:
<property name="file.encoding" value="UTF-8"/> <property name="DEFAULT_ENCODING" value="UTF-8"/>
浙公网安备 33010602011771号