BlackHole开发日记-jar包内文件的访问

你离开我真会死。 提交于 2019-12-09 19:56:16

####2012-12-27

今天将Mac下DNS设置的模块完成了,于是着手做一个单机服务器吧!将项目拆开成了两个目录,server和localserver。

另外解决了一个很初级的Spring配置的问题,如果要引入jar包中的配置,需要在classpath后面加上'',例如: classpath*:/spring/applicationContext.xml

后来又遇到一个问题:想要把shell脚本打入jar包,但是发现即使获取到了jar包中shell脚本的路径(xxx.jar!/xx/ss这样的路径),也无法使用外部程序调用这个文件!


####2012-12-28

怎么执行jar包内的shell脚本?这是个有趣的话题。后来尝试使用getResourceAsStream读取出文件,然后再写到临时文件夹,然后访问…好吧,问题解决。

后来完善了localserver的设计。考虑到项目已经有4个模块了,就引入了maven聚合来完成编译,将xml中module的路径配置一下就可以了。 顺便提一下,maven-jar-plugin也挺好用的,可以将META-INF写入jar包。例如,下面设置依赖路径和执行的Main类:

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId>
	<configuration>
		<archive>
			<manifest>
				<addClasspath>true</addClasspath>
				<classpathPrefix>lib</classpathPrefix>
				<mainClass>us.codecraft.blackhole.selfhost.MacMain</mainClass>
			</manifest>
		</archive>
	</configuration>
</plugin>

####2012-12-29

今天完成了Mac下的单机服务器版本,可以在程序启动的时候设置DNS服务器、清空DNS缓存,结果遇到了一个比较麻烦的问题:即使系统缓存清空了,浏览器仍然会有缓存。而且有个有趣的事情:浏览器DNS缓存的时间跟ttl值无关,因为浏览器不知道A记录的TTL值,所以一旦访问成功,都会尝试用一个固定过期时间来缓存内容。因为这个问题还挺费解的,也给之前的开发和测试带来不少困扰,所以就做了一个详细的研究,写了一篇博文:为什么修改hosts不立即生效?--浏览器DNS缓存机制分析

剩下的就是一些操作的包装了,好好考虑和测试一下。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!