页面树结构
转至元数据结尾
转至元数据起始

正在查看旧版本。 查看 当前版本.

与当前比较 查看页面历史

« 前一个 版本 4 当前 »

(本文档仅供参考)

问题:

        进入【系统监控】-》【线程】,点击会出现【未指定错误Caused by: java.lang.NoClassDefFoundError: Could not initialize class sun.tools.attach.LinuxVirtualMachine

                

         详细错误日志如下:

at smartbi.framework.rmi.ClientService.execute(Smartbi:134)
 at ...(...)
 at smartbi.freequery.migrate.ExportLog.exportThreadDumpByAttach(ExportLog.java:692)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class sun.tools.attach.LinuxVirtualMachine
 at sun.tools.attach.LinuxAttachProvider.attachVirtualMachine(LinuxAttachProvider.java:46)
 at smartbi.freequery.migrate.ExportLog.exportThreadDumpByAttach(ExportLog.java:692)
 at smartbi.freequery.migrate.ExportLog.exportThreadDumpInfo(ExportLog.java:477)
 at smartbi.management.LocalManagementHandler.getCurrentThreadDumpInfo(LocalManagementHandler.java:338)
 at smartbi.management.ManagementService.getCurrentThreadDumpInfo(ManagementService.java:159)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at smartbi.framework.rmi.ClientService.execute(Smartbi:118)
 at smartbi.framework.rmi.RMIServlet.processExecute(RMIServlet.java:199)
 at smartbi.framework.rmi.RMIServlet.doPost(RMIServlet.java:143)
 at javax.servlet.http.HttpServlet.service$WTImpl$javax$servlet$http$HttpServlet(HttpServlet.java:727)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
 at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
 at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
 at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
 at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
 at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
 at smartbi.extension.ExtensionFilter$2.doFilter(ExtensionFilter.java:138)
 at smartbi.extension.ExtensionFilter$1.doFilter(ExtensionFilter.java:127)
 at smartbi.extension.ExtensionFilter.doFilterInternal(ExtensionFilter.java:150)
 at smartbi.extension.ExtensionFilter.doFilter(ExtensionFilter.java:53)
 at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
 at smartbi.framework.rmi.TransactionFilter.doFilter(Smartbi:97)
 at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
 at smartbi.freequery.filter.GZIPFilter.doFilter(GZIPFilter.java:111)
 at smartbi.freequery.filter.Filter.doFilter(Filter.java:36)
 at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
 at smartbi.freequery.filter.CheckIsLoggedFilter.doFilter(CheckIsLoggedFilter.java:99)
 at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
 at smartbi.freequery.filter.TraceFilter.doFilter(TraceFilter.java:59)
 at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
 at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
 at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
 at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
 at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
 at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
 at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
 at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
 at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
 at weblogic.work.ExecuteThread.run(ExecuteThread.java:178

解决方案:

        原因:这是因为无法正常调用产品内置的tools.jar包,需要通过调用jdk上的tools.jar解决。

        具体解决方案:

        1、首先需要将war包里边自带的tools.jar移除,用压缩工具打开smartbi.war ,注意不是解压,然后找到 \smartbi\WEB-INF\lib\tools.jar ,进行删除。

            

       2、通过weblogic控制台卸载smartbi应用,然后再重新将这个删除了tools.jar的smartbi.war包部署到weblogic上。

       3、如果删除了war包上的tools.jar包后重新部署后,验证下在weblogic加载的jdk下的tools.jar包能否被正常调用 (一般jdk的tools.jar包是在JDK的lib目录下,这里是放到了JDK的bin目录):

             

            重启后,直接进入【系统监控】--》【类查找】:sun.tools.attach.LinuxAttachProvider

            

            然后再点击【线程】看是否可以正常打印:

            

           如果可以,就不需要进行下边步骤了。下次更新包的时候,记得删除掉war包里边的tools.jar重新部署即可。

           如果还是不行,那就按照以下步骤继续修改

       4、找到weblogic的启动文件 startWebLogic.sh ,记得备份。然后对这个文件如下部分进行修改,

             

            修改部分如下,红色字体部署就是指定JDK引用的tools.jar路径:

            echo "starting weblogic with Java version:"

            ${JAVA_HOME}/bin/java ${JAVA_VM} -version

            CLASSPATH="${CLASSPATH}:/home/jdk1.8.0_144/bin/tools.jar"

            

            注意为了保证tools.jar可以正常被调用,所以需要修改下tools.jar的权限:

            

           然后保存,并重启weblogic,然后再重新进入系统监控看【类查找】能否找到这个指定的路径:sun.tools.attach.LinuxAttachProvider

           

           以及验证【系统监控】--》【线程】能否正常打印,

           

           如果可以正常找到tools.jar,并且可以正常打印线程,说明成功指定jdk调用的tools.jar包。

           离线文档:weblogic指定jdk加载的tools.docx

           

Viewtracker License Missing

There is a problem with the license of the Viewtracker addon. Please check if you have a valid license.

授权码细节

  • 无标签