将 jcifs jar 添加到 tomcat 类路径

将 jcifs jar 添加到 tomcat 类路径

我有以下问题:

在我的 Web 应用程序中,其中一个 jar 必须位于 tomcat5.5 $CLASSPATH 中,而不能像其他 jar 位于 WEBAPP/lib 中。

我将其放在 tomcatdir/server/lib 中。(然后放在 tomcatdir/common/lib 中)。没有成功。

如果系统加载器(java)没有加载该jar,我就无法使用该jar提供的所有功能。

确切地说,使用“smb”类型的方案来实例化 URL 类型的变量。

事实上,我正在尝试做以下事情:

http://jcifs.samba.org/src/docs/faq.html#ukproto

有谁遇到过同样的问题?有更多 tomcat 经验吗?

谢谢

安托万

答案1

解决方案分为两部分:

  1. 手动将 jcifs jar 添加到 tomcat 类路径(通过明确添加绝对路径到 /ect/init.d/tomcat5.5 )。

  2. 还设置以下 java 系统属性:

- java.protocol.handler.pkgs=jcifs 要做到这一点有两个选择

  • 例如,在应用程序启动时,按照源代码进行操作。

    Properties prop = System.getProperties();
    prop.setProperty("java.protocol.handler.pkgs", "jcifs");
    
  • 或者在启动或 TOMCAT(不是应用程序)时使用 java -Djava.protocol.handler.pkgs=jcifs。请参阅 tomcat 启动脚本,变量就是为此而设的。(JAVA_OPT)

答案2

如果您已确认它没有被加载到您的类路径中(即通过调试器或其他方法),您可能必须将其放在 $JDK_HOME/jre/lib 目录中,以确保系统类加载器使用 VM 加载它。

或者,如果您想要访问 CIFS 文件系统,则可以使用 Apache Commons VFS 项目。它是许多不同文件系统的包装器,我已在自己过去的许多项目中成功使用它。我从未遇到任何困难,只需将其放在 $CATALINA_HOME/common/lib 目录中(其中 $CATALINA_HOME 是您的 Tomcat 目录)。不过我应该警告您,CIFS 模块目前处于孵化阶段。

相关内容