Articles with eclipse

奇怪的乱码

奇怪的乱码

项目中用到 FreeMarker,在 eclipse 里用 maven 插件 跑 jetty:run,看上去挺美好的。但是一旦修改 FreeMarker 的模版文件(包含中文,UTF-8 编码,无 BOM ),页面一刷新,乱码就出来了。关掉重开可以解决问题。但是总想不明白到底哪里出的问题。 我一开始猜测是 FreeMarker 的读取模版时候的编码问题,经过网上一轮 Google 之后,尝试了各式各样的设置 encoding 方法都不能解决问题。这个问题太困扰了,网上又找不到类似于这种第一轮启动没问题,一修改就出问题的情况,而这个情况在其他人哪里是可以重现的。难道就没有人遇到过?原本只是想简单用用,现在看来得调试进去看看到底出什么问题了。至少需要确认一个问题,究竟是哪个环节出现问题。 又经过一番逐行 debug,得到一个让人惊讶的线索。源代码显示,无论是第几次加载模版,调的都是同一个方法,这部分代码出错的几率不高。而逐行到加载得到模版内容(未经 parse 之前),修改前后加载得到的内容是不一样的,修改后重新加载得到的内容本身就有乱码。 至少,可以还 FreeMarker 一个清白了。凶手又会是谁呢?

Maven build 中启动 JMX Agent

为了监控 JVM,研究了下 VisualVM,但是不知道怎么导出里面的数据,可导出就比较方便做数据比对,而且也不知道怎么控制显示的历史信息跨度。而这两点在 JConsole 中都可以。于是要折腾 JConsole,一开始还不怎么顺利,虽然看上去只是几项配置。 因为在开发过程当中都是使用 mvn jetty:run 启动的。原来以为是这样: mvn jetty:run -Dcom.sun.management.jmxremote.port=9410 \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false 然后使用 jconsole 127.0.0.1:9410 ,提示是 Connection refused 后来了解到,如果 JMX Agent 启动成功的话,会产生一个端口监听。 再执行 netstat -a | grep 9410 ,毫无反应。 网上乱…

Continue reading

修改eclipse ${user}变量的值

最近老切换机器,但像Eclipse这样的工具还是必须用到,但是每次新建一个java文件,文件头自动生成带有 @author 的注释。 不过问题是那个 @author 是按照系统用户来的。虽然SVN提交代码的时候有准确的用户名,但是文件里面那个不是每次都记得要修改。 以前是通过修改新建的文件模板来达到效果的。 模板里面是 @author ${user},里面 ${user} 是一个系统变量,可以通过下面的语句拿到。 System.getProperty("user.name") 修改这个值可以通过 /path/to/eclipse -vmargs -Duser.name="My Name" 或者 修改eclipse.ini …… -vmargs -Dosgi.requiredJavaVersion=1.5 -Duser.name=leegorous …… 重新启动 Eclipse 就起效了。