我正在使用birt开发javaweb应用程序,当我从eclipse运行该应用程序时,它会按预期工作,但是当我从netbeans运行它或在tomcat上手动部署它时,它会出错
Caused by: java.lang.IllegalArgumentException: securityDomain should be null if setSecurityController() was never called
at org.mozilla.javascript.Context.compileImpl(Context.java:2340)
at org.mozilla.javascript.Context.compileString(Context.java:1359)
at org.mozilla.javascript.Context.compileString(Context.java:1348)
at org.eclipse.birt.report.engine.javascript.JavascriptEngine$3.run(JavascriptEngine.java:240)
at org.eclipse.birt.report.engine.javascript.JavascriptEngine$3.run(JavascriptEngine.java:1)
请问怎么修?
4条答案
按热度按时间wvmv3b1j1#
试着把
System.setSecurityManager(null);
在你调用报告之前先输入你的代码。每个jvm示例只需执行一次。ovfsdjhp2#
我使用birt runtime 4.2.2而不是4.3.1版本,现在一切都正常了,即使没有禁用security manager。谢谢大家的帮助
0wi1tuuw3#
几天前我把它报告为critical bug 429944,你应该在bugzilla投票支持它。
据我所知,有两种可能的解决方法:
选项1:如果可能,禁用tomcat服务器的安全管理。默认情况下,它是禁用的,但在您的上下文中似乎不是。检查参数“-security”是否用于启动tomcat,并尝试删除它。
选项2:正如错误描述中所建议的,有两种方法应该在birt的源代码中更改,以便快速修复。
bvpmtnay4#
您不应该停用安全管理器!这里有一个绕过错误的提示:
这两条线应该能解决问题。我在一个房间里发现的
org.eclipse.birt.report.engine.javascript.JavascriptEngineFactory
类文件,所以基本上您希望直接调用类JavascriptEngineFactory
以一种好的方式初始化一切。