<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>威言大义 &#187; Java</title>
	<atom:link href="http://www.chenweionline.cn/archives/tag/java/feed" rel="self" type="application/rss+xml" />
	<link>http://www.chenweionline.cn</link>
	<description>言简意赅，论人论事论学问</description>
	<lastBuildDate>Thu, 05 May 2011 05:16:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Eclipse出现java was started but returned exit code 1报错并退出的解决方法</title>
		<link>http://www.chenweionline.cn/archives/57.htm</link>
		<comments>http://www.chenweionline.cn/archives/57.htm#comments</comments>
		<pubDate>Fri, 22 Apr 2011 05:33:44 +0000</pubDate>
		<dc:creator>陈威</dc:creator>
				<category><![CDATA[技术杂谈]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[开发经验]]></category>

		<guid isPermaLink="false">http://www.chenweionline.cn/?p=57</guid>
		<description><![CDATA[

热度:

&#160;&#160;&#160;&#160;&#160;&#160;最近在使用Eclipse时发现无法启动，或者启动后经常出现崩溃退出的情况，提示的错误信息都是“java was started but returned exit code 1”，下载安装了最新版的Eclipse后还是没有解决问题。无奈之下只好百度之，翻了好几页都没有发现有用的信息，直接换到Google.com，终于在Eclipse Forum找到了一个靠谱的答案（网址是http://www.eclipse.org/forums/index.php?t=tree&#38;goto=547573&#38;#page_top），回答答案是“Eclipse is using the system default JRE that it finds in the windows system folders. You should point it to a JDK installation using eclipse.ini (as described here: http://wiki.eclipse.org/Eclipse.ini )”，大意是Eclipse启动的时候默认会使用从windows系统目录下找到的JRE作为默认的环境，由于我之前升级安装了一下JDK，所以系统目录下的JRE和实际的Java安装是不匹配的，因此会出现运行Eclipse时报错的情况。
解决方案：
&#160;&#160;&#160;&#160;&#160;&#160;根据eclipse.ini文件的说明（http://wiki.eclipse.org/Eclipse.ini），该文件提供指定运行eclipse的JVM功能，需要在eclipse.ini中加入JVM的路径说明。语法很简单：
-vm
C:\Program Files\Java\jdk1.6.0_22\bin\javaw.exe
&#160;&#160;&#160;&#160;&#160;&#160;eclipse.ini说明文档中特别提到使用-vm参数的注意事项：
（1）The -vm option and its value (the path) must be on separate lines.（-vm选项和其对应的javaw.exe的路径必须各占一行，这应该是参数解析的格式要求）
（2）The value must be the [...]]]></description>
			<content:encoded><![CDATA[
<table>
<tr cellpadding=0><td>热度:</td><td cellpadding=0><img src='http://www.chenweionline.cn/wp-content/plugins/statpresscn/images/sun.gif' width=10 height=10 border=0 /></td><td cellpadding=0><img src='http://www.chenweionline.cn/wp-content/plugins/statpresscn/images/sun.gif' width=10 height=10 border=0 /></td><td cellpadding=0><img src='http://www.chenweionline.cn/wp-content/plugins/statpresscn/images/sun.gif' width=10 height=10 border=0 /></td><td cellpadding=0><img src='http://www.chenweionline.cn/wp-content/plugins/statpresscn/images/sun.gif' width=10 height=10 border=0 /></td><td cellpadding=0><img src='http://www.chenweionline.cn/wp-content/plugins/statpresscn/images/sun.gif' width=10 height=10 border=0 /></td></tr>
</table>
<p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最近在使用Eclipse时发现无法启动，或者启动后经常出现崩溃退出的情况，提示的错误信息都是“java was started but returned exit code 1”，下载安装了最新版的Eclipse后还是没有解决问题。无奈之下只好百度之，翻了好几页都没有发现有用的信息，直接换到Google.com，终于在Eclipse Forum找到了一个靠谱的答案（网址是<a href='http://www.eclipse.org/forums/index.php?t=tree&amp;goto=547573&amp;#page_top' target='_blank'>http://www.eclipse.org/forums/index.php?t=tree&amp;goto=547573&amp;#page_top</a>），回答答案是“Eclipse is using the system default JRE that it finds in the windows system folders. You should point it to a JDK installation using eclipse.ini (as described here: http://wiki.eclipse.org/Eclipse.ini )”，大意是Eclipse启动的时候默认会使用从windows系统目录下找到的JRE作为默认的环境，由于我之前升级安装了一下JDK，所以系统目录下的JRE和实际的Java安装是不匹配的，因此会出现运行Eclipse时报错的情况。<span id="more-57"></span><br />
<strong>解决方案：<br />
</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;根据eclipse.ini文件的说明（<a href='http://wiki.eclipse.org/Eclipse.ini' target='_blank'>http://wiki.eclipse.org/Eclipse.ini</a>），该文件提供指定运行eclipse的JVM功能，需要在eclipse.ini中加入JVM的路径说明。语法很简单：</p>
<pre>-vm</pre>
<pre>C:\Program Files\Java\jdk1.6.0_22\bin\javaw.exe</pre>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eclipse.ini说明文档中特别提到使用-vm参数的注意事项：<br />
（1）<strong>The -vm option and its value (the path) must be on separate lines</strong>.（-vm选项和其对应的javaw.exe的路径必须各占一行，这应该是参数解析的格式要求）<br />
（2）<strong>The value must be the full absolute path to the Java executable, not just to the Java home directory</strong>.（指定的虚拟机路径必须是指向可执行Java程序的完整绝对路径，不能只指定到Java_HOME目录。这个好理解，要指定JVM的话肯定要指定到具体的可执行文件去）<br />
（3）<strong>The -vm option must occur before the -vmargs option, since everything after -vmargs is passed directly to the JVM</strong>.（-vm选项必须放在-vmargs选项前，这是因为-vmargs选项后的值都是作为JVM的参数传给虚拟机的，如果-vm放在-vmargs之后就没有意义了。而-vmargs选项中一般可指定-Xms和-Xmx这两个内存参数）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chenweionline.cn/archives/57.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用JDK 1.6自带的jvisualvm监控远程服务器中Java程序资源占用情况</title>
		<link>http://www.chenweionline.cn/archives/56.htm</link>
		<comments>http://www.chenweionline.cn/archives/56.htm#comments</comments>
		<pubDate>Thu, 24 Mar 2011 07:07:54 +0000</pubDate>
		<dc:creator>陈威</dc:creator>
				<category><![CDATA[Unix/Linux系统]]></category>
		<category><![CDATA[技术杂谈]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.chenweionline.cn/?p=56</guid>
		<description><![CDATA[

热度:

&#160;&#160;&#160;&#160;&#160;&#160;因为做实验的需要，最近把实验室的Web数据抽取程序修改为多线程版本并在服务器上做大量的数据抽取工作，服务器是Ubuntu Server 10.01版本，通过Putty连接监控程序的运行情况非常不直观，需要使用一个Java资源监控程序实现对目标程序的实时监控。Jdk1.5版本提供的监控工具是Jconsole，相信很多早期的Java开发人员都使用过这个程序，但Jconsole的界面实在是有点对不起观众，所以在jdk1.6中Oracle提供了一个新的可视化的JVM监控工具Java VisualVM（官方介绍链接：http://download.oracle.com/javase/6/docs/technotes/guides/visualvm/applications_remote.html），在Windows系统下的Java VisualVM启动路径是$java_home$/jdk1.6.0/bin/jvisualvm.exe。
&#160;&#160;&#160;&#160;&#160;&#160;双击启动Java VisualVM后可以看到窗口左侧“应用程序”栏中有“本地”、“远程”、“快照”三个项目。其中“本地”下显示的是在localhost运行的Java程序的资源占用情况，如果本地有Java程序在运行的话启动Java VisualVM即可看到相应的程序名，点击程序名打开相应的资源监控菜单，以图形的形式列出程序所占用的CPU、Heap、PermGen、类、线程的统计信息。“远程”项下列出的远程主机上的Java程序的资源占用情况，但需要在远程主机上运行jstatd守护程序，下面就以实现对远程Ubuntu Server中运行的Java程序资源监控为例说明如何使用Java VisualVM监控远程Java程序。
&#160;&#160;&#160;&#160;&#160;&#160;（1）在服务器上安装jstatd组件。由于安装JDK时配置选项的原因，有的服务器中没有默认安装jstatd组件。jstatd是openjdk中的一个package，使用apt-get命令安装openjdk即可。关于jstatd组件的详细介绍可参考：http://download.oracle.com/javase/6/docs/technotes/tools/share/jstatd.html
sudo apt-get install openjdk-6-jdk
&#160;&#160;&#160;&#160;&#160;&#160;（2）在服务器上配置jstatd的security policy文件。jstatd是一个监控JVM从创建到销毁过程中资源占用情况并提供远程监控接口的RMI（Remote Method Invocation，远程方法调用）服务器程序，它是一个Daemon程序，要保证远程监控软件连接到本地的话需要jstatd始终保持运行。jstatd运行需要通过-J-Djava.security.policy=***指定安全策略，因此我们需要在服务器上建立一个指定安全策略的文件jstatd.all.policy，文件内容如下：
grant codebase "file:${java.home}/../lib/tools.jar" {
   permission java.security.AllPermission;
};
&#160;&#160;&#160;&#160;&#160;&#160;（3）修改服务器hosts文件中的IP地址。要使Java VisualVM成功连接到远程服务器上，服务器端应该在/etc/hosts文件中把本机地址设为本机的IP地址。使用hostname -i命令查看，如果显示的是127.0.0.1或者与本机实际IP不一致的话，需要把/etc/hosts文件中相应的地址改为本机实际IP。
&#160;&#160;&#160;&#160;&#160;&#160;（4）运行jstatd守护程序。由于jstatd需要保持一直运行，所以建议使用screen命令执行jstatd程序，命令如下：
screen jstatd -J-Djava.security.policy=jstatd.all.policy
如果需要RMI日志功能的话，还可以在启动参数中加入-J-Djava.rmi.server.logCalls=true。jstatd开始运行后，使用CTRL+A+D断开screen界面，回到shell界面。如果想切换回jstatd运行界面的话，使用screen -r -d命令即可。
&#160;&#160;&#160;&#160;&#160;&#160;（5）通过Java VisualVM连接到服务器监控Java程序。在Java VisualVM程序窗口左侧“远程”项目右键选择“添加远程主机”，在弹出的对话框中输入远程主机的IP地址，确认提交后即可看到相应的远程主机和在上面运行的Java程序，连接成功后应该会显示Jstatd及其PID。
]]></description>
			<content:encoded><![CDATA[
<table>
<tr cellpadding=0><td>热度:</td><td cellpadding=0><img src='http://www.chenweionline.cn/wp-content/plugins/statpresscn/images/sun.gif' width=10 height=10 border=0 /></td><td cellpadding=0><img src='http://www.chenweionline.cn/wp-content/plugins/statpresscn/images/sun.gif' width=10 height=10 border=0 /></td><td cellpadding=0><img src='http://www.chenweionline.cn/wp-content/plugins/statpresscn/images/sun.gif' width=10 height=10 border=0 /></td><td cellpadding=0><img src='http://www.chenweionline.cn/wp-content/plugins/statpresscn/images/sun.gif' width=10 height=10 border=0 /></td><td cellpadding=0><img src='http://www.chenweionline.cn/wp-content/plugins/statpresscn/images/sun.gif' width=10 height=10 border=0 /></td></tr>
</table>
<p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;因为做实验的需要，最近把实验室的Web数据抽取程序修改为多线程版本并在服务器上做大量的数据抽取工作，服务器是Ubuntu Server 10.01版本，通过Putty连接监控程序的运行情况非常不直观，需要使用一个Java资源监控程序实现对目标程序的实时监控。Jdk1.5版本提供的监控工具是Jconsole，相信很多早期的Java开发人员都使用过这个程序，但Jconsole的界面实在是有点对不起观众，所以在jdk1.6中Oracle提供了一个新的可视化的JVM监控工具Java VisualVM（官方介绍链接：<a href="http://download.oracle.com/javase/6/docs/technotes/guides/visualvm/applications_remote.html" target="_blank">http://download.oracle.com/javase/6/docs/technotes/guides/visualvm/applications_remote.html</a>），在Windows系统下的Java VisualVM启动路径是<strong>$java_home$/jdk1.6.0/bin/jvisualvm.exe</strong>。<span id="more-56"></span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;双击启动Java VisualVM后可以看到窗口左侧“应用程序”栏中有“<strong>本地</strong>”、“<strong>远程</strong>”、“<strong>快照</strong>”三个项目。其中“本地”下显示的是在localhost运行的Java程序的资源占用情况，如果本地有Java程序在运行的话启动Java VisualVM即可看到相应的程序名，点击程序名打开相应的资源监控菜单，以图形的形式列出程序所占用的CPU、Heap、PermGen、类、线程的统计信息。“远程”项下列出的远程主机上的Java程序的资源占用情况，但需要在远程主机上运行<strong>jstatd守护程序</strong>，下面就以实现对远程Ubuntu Server中运行的Java程序资源监控为例说明如何使用Java VisualVM监控远程Java程序。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（1）<strong>在服务器上安装jstatd组件</strong>。由于安装JDK时配置选项的原因，有的服务器中没有默认安装jstatd组件。jstatd是openjdk中的一个package，使用apt-get命令安装openjdk即可。关于jstatd组件的详细介绍可参考：<a href="http://download.oracle.com/javase/6/docs/technotes/tools/share/jstatd.html" target="_blank">http://download.oracle.com/javase/6/docs/technotes/tools/share/jstatd.html</a></p>
<pre><strong>sudo apt-get install openjdk-6-jdk</strong></pre>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（2）<strong>在服务器上配置jstatd的security policy文件</strong>。jstatd是一个监控JVM从创建到销毁过程中资源占用情况并提供远程监控接口的RMI（Remote Method Invocation，远程方法调用）服务器程序，它是一个Daemon程序，要保证远程监控软件连接到本地的话需要jstatd始终保持运行。jstatd运行需要通过<strong>-J-Djava.security.policy=***</strong>指定安全策略，因此我们需要在服务器上建立一个指定安全策略的文件jstatd.all.policy，文件内容如下：</p>
<pre><strong>grant codebase "file:${java.home}/../lib/tools.jar" {
   permission java.security.AllPermission;
};</strong></pre>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（3）<strong>修改服务器hosts文件中的IP地址</strong>。要使Java VisualVM成功连接到远程服务器上，服务器端应该在/etc/hosts文件中把本机地址设为本机的IP地址。使用hostname -i命令查看，如果显示的是127.0.0.1或者与本机实际IP不一致的话，需要把/etc/hosts文件中相应的地址改为本机实际IP。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（4）<strong>运行jstatd守护程序</strong>。由于jstatd需要保持一直运行，所以建议使用screen命令执行jstatd程序，命令如下：</p>
<pre><strong>screen jstatd -J-Djava.security.policy=jstatd.all.policy</strong></pre>
<p>如果需要RMI日志功能的话，还可以在启动参数中加入<strong>-J-Djava.rmi.server.logCalls=true</strong>。jstatd开始运行后，使用CTRL+A+D断开screen界面，回到shell界面。如果想切换回jstatd运行界面的话，使用screen -r -d命令即可。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（5）<strong>通过Java VisualVM连接到服务器监控Java程序</strong>。在Java VisualVM程序窗口左侧“远程”项目右键选择“添加远程主机”，在弹出的对话框中输入远程主机的IP地址，确认提交后即可看到相应的远程主机和在上面运行的Java程序，连接成功后应该会显示Jstatd及其PID。</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.chenweionline.cn/archives/56.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse中给jar包导入JavaDoc的方法</title>
		<link>http://www.chenweionline.cn/archives/41.htm</link>
		<comments>http://www.chenweionline.cn/archives/41.htm#comments</comments>
		<pubDate>Sun, 25 Apr 2010 06:05:30 +0000</pubDate>
		<dc:creator>陈威</dc:creator>
				<category><![CDATA[技术杂谈]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[开发经验]]></category>

		<guid isPermaLink="false">http://www.chenweionline.cn/?p=41</guid>
		<description><![CDATA[

热度:

&#160;&#160;&#160;&#160;&#160;&#160;在使用Java语言开发的过程中，开发人员经常需要用到一些开源的工具包。在使用别人的jar包的时候，为了保证正常调用包内的方法需要把jar包添加到Referenced Libraries中。由于jar中通常只打包了类的二进制文件，其JavaDoc文件仍需要以浏览器或chm帮助文档的方式查看。Eclipse开发环境中提供了将JavaDoc文档附加到jar包中的功能，使开发者不再需要人工查找类或方法的JavaDoc注释，省时又省力。
&#160;&#160;&#160;&#160;&#160;&#160;Eclipse支持两种方式的JavaDoc导入：一种是在线的URL地址指向的JavaDoc页面，另一种是保存在本地的JavaDoc文档的jar包或zip包。给jar包附加JavaDoc的步骤如下：
&#160;&#160;&#160;&#160;&#160;&#160;1. 在Eclipse的Package Explorer视图下Referenced Libraries下找到想导入JavaDoc的jar文件，右键-&#62;选择properties进入属性配置菜单。
&#160;&#160;&#160;&#160;&#160;&#160;2. 在属性菜单中点击JavaDoc Location选项卡进入JavaDoc地址配置功能。
&#160;&#160;&#160;&#160;&#160;&#160;3. 根据能获得的JavaDoc文档的具体情况，选择JavaDoc URL或JavaDoc in Archive中的任一个分别设置相应的JavaDoc地址。如果选择以JavaDoc URL方式导入，则在javadoc location path中填入JavaDoc的URL地址，如http://hc.apache.org/httpcomponents-client-4.0.1/httpclient/apidocs/(注意，不要在路径中指定index.html）;如果选择以JavaDoc in Archive的方式导入，则在javadoc location path中填入本地JavaDoc文件的路径（注意，在打包javadoc文件里要把index.html文件放在文件夹的顶层目录下。
&#160;&#160;&#160;&#160;&#160;&#160;在导入了javadoc后，编写程序的过程中使用jar包中的方法时Eclipse会自动显示其注释说明，可以大大提高开发人员的效率。
]]></description>
			<content:encoded><![CDATA[
<table>
<tr cellpadding=0><td>热度:</td><td cellpadding=0><img src='http://www.chenweionline.cn/wp-content/plugins/statpresscn/images/sun.gif' width=10 height=10 border=0 /></td><td cellpadding=0><img src='http://www.chenweionline.cn/wp-content/plugins/statpresscn/images/sun.gif' width=10 height=10 border=0 /></td><td cellpadding=0><img src='http://www.chenweionline.cn/wp-content/plugins/statpresscn/images/sun.gif' width=10 height=10 border=0 /></td><td cellpadding=0><img src='http://www.chenweionline.cn/wp-content/plugins/statpresscn/images/sun.gif' width=10 height=10 border=0 /></td><td cellpadding=0><img src='http://www.chenweionline.cn/wp-content/plugins/statpresscn/images/sun.gif' width=10 height=10 border=0 /></td></tr>
</table>
<p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在使用Java语言开发的过程中，开发人员经常需要用到一些开源的工具包。在使用别人的jar包的时候，为了保证正常调用包内的方法需要把jar包添加到Referenced Libraries中。由于jar中通常只打包了类的二进制文件，其JavaDoc文件仍需要以浏览器或chm帮助文档的方式查看。Eclipse开发环境中提供了将JavaDoc文档附加到jar包中的功能，使开发者不再需要人工查找类或方法的JavaDoc注释，省时又省力。<span id="more-41"></span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Eclipse支持两种方式的JavaDoc导入：一种是在线的URL地址指向的JavaDoc页面，另一种是保存在本地的JavaDoc文档的jar包或zip包。给jar包附加JavaDoc的步骤如下：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. 在Eclipse的Package Explorer视图下Referenced Libraries下找到想导入JavaDoc的jar文件，右键-&gt;选择properties进入属性配置菜单。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. 在属性菜单中点击JavaDoc Location选项卡进入JavaDoc地址配置功能。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3. 根据能获得的JavaDoc文档的具体情况，选择JavaDoc URL或JavaDoc in Archive中的任一个分别设置相应的JavaDoc地址。如果选择以JavaDoc URL方式导入，则在javadoc location path中填入JavaDoc的URL地址，如http://hc.apache.org/httpcomponents-client-4.0.1/httpclient/apidocs/(注意，不要在路径中指定index.html）;如果选择以JavaDoc in Archive的方式导入，则在javadoc location path中填入本地JavaDoc文件的路径（注意，在打包javadoc文件里要把index.html文件放在文件夹的顶层目录下。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在导入了javadoc后，编写程序的过程中使用jar包中的方法时Eclipse会自动显示其注释说明，可以大大提高开发人员的效率。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chenweionline.cn/archives/41.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

