显示标签为“Java”的博文。显示所有博文
显示标签为“Java”的博文。显示所有博文

2011年8月16日星期二

Java SSL 客户端程序无法和服务器握手的解决办法

很多HTTPS的网站的证书都有这样或者那样的问题,Google的网站我都见过证书有问题的,所以这些网站按照严格的标准是不应该被访问的,于是Java的SSL库当碰到这些网站时都会报错,具体体现在握手(Handshake)时,发了Client Hello,服务器回了Server Hello,SSL库发现证书有问题,马上回了Fatal: Unexpected Message,然后抛异常。解决的办法是:在运行时加上这个参数:-Dsun.security.ssl.allowUnsafeRenegotiation=true。

参考资料:http://stackoverflow.com/questions/2606873/sslexception-hellorequest-followed-by-an-unexpected-handshake-message 


2007年4月15日星期日

升级Eclipse要注意的问题

将Eclipse 3.1升级到3.2.2,用回原来的Workspace,运行SWT的应用程序时,会出现下列的错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-win32-3236 in java.library.path

如果是升级到3.2,会出现:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-win32-3232 in java.library.path

这两个错误原来在独立运行SWT应用程序时,支持SWT运行的dll找不到时才会出现,为什么在Eclipse里面也会出现这两个错误,原来在Eclipse运行SWT应用程序时,使用到的dll是放在Workspace下的.metadata\.plugins\org.eclipse.pde.ui\xxxx.swt中,由于用的是原来的Workspace,所以这个目录下的dll还是旧版本3.1的,但程序使用的jar的库是3.2.2的,运行时找不到正确版本的Dll就会出错。所以升级完Eclipse,记住要替换这个目录下的dll,原来的SWT应用程序才能在Eclipse下正常运行。RCP程序更麻烦,为了兼容3.1的模式,一旦判断使用的是旧版本的Workspace,会在Eclipse所在的盘的根目录下创建target/eclipse目录把3.1的所有RCP支撑库全部放在这里,运行也会出错,目前还找不到解决的办法。

所以升级Eclipse,最好重新创建新的Workspace,再把原来Workspace的程序的source拷贝过去,会少很多问题。

2004年9月24日星期五

FreeBSD Java SDK一个需要注意的地方

在FreeBSD 4.x 和 5.x 上用Linux兼容模式运行jdk时,会出现这样一个警告:

Java HotSpot(TM) Client VM warning: Can't detect initial thread stack location

不知道会有什么问题,总之觉得不是很好,在Google上查了一下,有人说要重编Kernel,有人给出了我认为是正确的解决办法:Java出现这个警告的主要原因是找不相应的进程的信息。因为是Linux兼容模式,Linux下的/proc实际上给映射到了FreeBSD下的/compat/linux/proc目录下,这实际上也是一种文件系统,在FreeBSD下称为linprocfs,默认的时候并没有给mount起来。所以在运行Java前一定要先把/compat/linux/proc给mount起来。具体做法如下:

1、在/etc/fstab 中添加一行:
linprocfs /compat/linux/proc linprocfs rw 0 0

2、打入命令:
mount /compat/linux/proc/

再运行Java就不会有原来的错误信息了。