月度归档:2014年08月

java application 是如何找到 jar 文件的?

用 idea 启动 struts web application,发现依赖的 jar 中的 action 不会被找到。

一路跟下去

发现 struts detect jar 的方法。

先找 classpath 里面的 META-INF,然后 parse url,确定是不是 jar

idea 生成的依赖 jar 里面,是不带 META-INF 的,所以。。。。。。。。

先解决这个问题,在依赖的项目里,增加 META-INF 目录,但里面要有文件,用 git 的同学可以增加一个内容为 .gitignore 的文件 .gitignore

问题解决。

java app 的确没什么好办法能够找到 jar,归根结底其实是 java app 只有 classpath 可见。
让我想到了 spring 中,component auto scan 的方法,会去 classpath get entity,而且这个 entity 是 folder,直接就会遇到两个问题。

1. 根目录 ‘/’ 是没办法 get 的
2. 如果使用某些打包或混淆工具打出来的 jar,是没有这些 entity 的

直接导致 spring 这个功能不能使用。

看来这个只有从 jvm 层面来解决了。

一行代码变格格

我需要把数据库字段变成骆驼,然后,就有了下面这一行代码。

val s = “””
| private Long id;
| private Long from_material_id;
| private Long to_material_id;
| private Long from_mu_id;
| private Long to_mu_id;
| private Long from_template_id;
| private Long to_template_id;
| private String error_message;
| private Date create_time;
| private String layout;”””.stripMargin
val r = “””_(\w)”””.r.replaceSomeIn(s, m => Some(m.group(1).toUpperCase()))