改变Google App Engine的javac编译器编码

Change the Google App Engine's Javac Compiler Encoding

 

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反编译后,可以看到如下代码片段(红色部分为本人所加内容):

 

    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 appengine-tools-api.jar (JDK6编译)

2.为了避免编码带来的烦恼,建议大家在appengine-web.xml中的system-properties节点中加入如下代码:

 

  <property name="file.encoding" value="UTF-8"/>
  <property name="DEFAULT_ENCODING" value="UTF-8"/> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值