html调用properties,Html里调用applet 报找不到log4j.properties

本文探讨了在HTML中嵌入Applet时遇到的log4j.properties文件查找问题,如何处理Applet签名限制以及如何调整路径以确保浏览器环境下日志记录。作者分享了解决方案和相关安全机制背景。
摘要由CSDN通过智能技术生成

当前位置:编程学习 > JAVA >>

Html里调用applet 报找不到log4j.properties

我用appletviewer运行applet时是可以正常打印日志的,

但是把applet打成jar包签入到html页面里运行,就会报找不到log4j.properties错误。如果把log4j.properties写成绝对路径时html页面里就也能找到,但是相对的就找不到,为什么呢?我已经把log4j.properties和html还有jar包放到同一个目录下了。

applet代码如下:

static private void InitLog()

{

try

{

m_logger = Logger.getLogger ( PhonePlugin.class.getName () );

//PropertyConfigurator.configure ( "C:\\phoneplugin\\log4j.properties" );

PropertyConfigurator.configure ( "log4j.properties" );

}

catch ( Exception ex )

{

ex.printStackTrace ();

}

}

html页面代码如下:

--------------------编程问答--------------------

╮(╯▽╰)╭不会啊~祝福楼主的问题早日得到解决

--------------------编程问答--------------------

--------------------编程问答--------------------

PS:

我在Applet代码里加了一段获取当前路径的代码如下:

m_logger = Logger.getLogger ( PhonePlugin.class.getName () );

PropertyConfigurator.configure ( "log4j.properties" );

Properties property = System.getProperties();

String str = property.getProperty("user.dir");

在appletviewer里运行的时候,获取当前路径是E:\Flex\workspace\PhonePlugin

就是我放TestTerminal.html、PhonePlugin.jar包和log4j.properties的路径

但是在用浏览器打开TestTerminal.html运行的时候,获取到的当前路径却是桌面所以找不到log4j.properties

应该怎样让浏览器打开TestTerminal.html运行时候的当前路径也是E:\Flex\workspace\PhonePlugin这个路径呢?

--------------------编程问答--------------------

Applet 因所谓安全问题,未经签名不能访问本地资源!

--------------------编程问答--------------------

引用 4 楼  的回复:Applet 因所谓安全问题,未经签名不能访问本地资源!

那怎么把路径写死的C:\\phoneplugin\\log4j.properties 这样就能访问呢?

--------------------编程问答--------------------

遭遇同样问题,表示签名了依然不能访问,PropertyConfigurator.configure ( "log4j.properties" );后就卡住不动了。。。。。坐等大牛解答

--------------------编程问答--------------------

情景二:applet引入第三方的jar包,网页调用。

这种情况比较烦人,这也是我纠结两天没才弄出来的原因。

步骤基本如下:

第一步:

我写了一个applet。修改了init方法,重写了paint方法,代码如下。

public void paint(Graphics g)

{

Output outClass = new Output();

g.drawString("hahaha",20,20);

g.drawString(outClass.getString(),10,10);

}

public void init() {

setLayout(new FlowLayout());

add(new Button("预览"));

}

Output为我写的一个工具类类(它的主要作用是为了测试引入第三方jar包时,applet调用的问题),它会引入了一个第三方的jar包叫做“jna.jar”。代码如下:

import com.sun.jna.NativeLong;

public class Output {

public String getString()

{

NativeLong m_lUserID = new NativeLong(1);//用户登录句柄

return "You are in the Output Class" +m_lUserID.intValue();

}

}

第二步:写一个demo2.html

code="DemoApplet.class"

name="DemoApplet"

archive="jna.jar"

width="320"

height="240">

参数说明:其他参数都一样,只有添加了archive="jna.jar"这个参数是用来书写你引入的jar包的。如果有多个jar包,通过","分割。

【注】

1.第三方的jar包要和编译过的TestSimpleApplet.class在同一个目录下。

2.工具类(outclass)编译所产生的class文件(output.class 和引入的其他类的编译文件)也要放在codebase所表明的文件夹下。

第三步:

找到浏览器默认的jre,在其目录,举例为:*盘:\*\j2re1.4.2_05\lib\security\java.policy

在grant{}中添加如下一行代码:

permission   java.security.AllPermission;

第四步:

点击运行网页,就出现了我们要的结果了。

可能出现错误:

1.红色的叉,提示class无法找到。这就要注意查看applet的code 和codebase是否写对,.class和.jar

文件的位置是否正确。

2.security之类的错误。这主要就是因为要调用用户本地的文件,但是由于jave的安全机制原因,不让applet访问用户本地文件,所以会发生异常。此时,就需要给applet赋予访问权限,从而避免错误。

3.网页中显示空白一块,或是灰色。那就是发生了异常,但是没有显示出来。

此时就要在IE的选项->高级->选择Java(Sun)将JRE***用于。从而当网页运行applet程序时就会显示Java控制台。显示相应的异常错误,仔细观察,相信可以找到错误的原因。

如有不解,请参考http://blog.csdn.net/rdhj5566/article/details/7774997

--------------------编程问答--------------------

另外给引入的log4j加签名,可不用执行以上第三步

补充:Java , Web 开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值