【问题标题】:Java Lib file errorsJava Lib 文件错误
【发布时间】:2011-02-13 00:56:43
【问题描述】:

我是一名全新的 Java 开发人员(我一直在 asp.net 中工作),并且我继承了一个我正在尝试正确运行的项目。我在 Windows 7 上并安装了 Tomcat,我正在使用 Eclipse

我正在试图弄清楚 Jar 在 Java 中是如何工作的,我现在真的很困惑。我一直在玩它并在网上查找大约一天的东西,这就是我所在的位置:

我有一个我继承的动态 Web 项目,我认为它是一个相当标准的项目布局。项目根目录中有一个 lib 文件夹,其中包含一些 jar。

如果我不执行任何操作并转到站点中的特定页面,我会收到此错误:“无法解析导入 net.sf,无法将 XLSTransformer 解析为类型”

所以我在 Eclipse 的构建路径中添加了 jxls-core-0.9.8.jar 并且该错误消失了,但现在我收到此错误“java.lang.ClassNotFoundException: net.sf.jxls.transformer.XLSTransformer”

我将该 jar 从其当前位置复制到了 tomcat/lib 目录,并且该错误消失了。现在我在另一个文件中遇到了基本相同的问题。

主要我只需要知道jar应该如何工作?它们是否需要在类路径中,在 web/WEB-INF/lib 中,在 tomcat/lib 中,在所有这些中,没有一个我只是想不通。

此外,当我环顾四周时,我看到一些东西表明我的类路径条目的顺序也很重要。如果是这种情况,你如何确保它们的顺序正确。

【问题讨论】:

    标签: java eclipse tomcat jar


    【解决方案1】:

    你的 jars 需要去哪里实际上取决于 - 有完整的最佳实践和涉及的主要问题。 Jar Hell 一词的存在是有原因的。

    您的应用程序使用的所有类都必须在类路径中。他们如何到达那里取决于classloader

    为了更全面地理解,您需要阅读 Java classloader。理想情况下,您需要查看 Tomcat 的 classloader,或者至少是 Servlet Container 的类加载器,因为 Tomcat 的类加载器与 Java SE(桌面)应用程序的类加载器不同,与 applet 的类加载器也不同。最重要的是,如果你不理解它们,类加载器真的会咬你。如果您想了解 servlet 容器应该如何工作的详细信息,可以查看最新最好的 Servlet specification

    Tomcat 的classloader 上的信息为您提供了最佳实践列表。请注意,我已经链接了 5.5 版本。如果您使用的是更高或更早的版本,请检查您的版本是否有相同的文件。

    【讨论】:

      【解决方案2】:

      以下建议可能有助于解决问题。

      WAR 文件(Web 档案)会将应用程序的所有依赖项 JAR 放在目录 WEB-INF/lib 中。如果您收到有关缺少类的报告,请尝试解压缩您的 WAR 文件,或查看应用服务器的展开的 webapp 目录,看看是否有必要的 jar。

      此位置与 tomcat/lib 之间的区别在于,tomcat/lib 中的 JAR 在 Tomcat 的父类加载器中可用于所有已加载的应用程序。 (事实上​​,如果应用程序在 WEB-INF/lib 中有自己的特定 JAR 版本,这可能会导致问题。)WEB-INF/lib 中的 JAR 加载到应用程序的类加载器中,并且仅适用于该应用程序。

      如果 WEB-INF/lib 中缺少您的 JAR,请检查您的构建脚本或 Eclipse 中项目的构建路径。祝你好运!

      【讨论】:

        【解决方案3】:

        在 Eclipse 中,我导出为“可运行的 JAR 文件”,然后在对话框中的“库处理”下,选择“将所需的库提取到生成的 Jar 中”。

        基本上,这意味着如果我可以在 Eclipse 中无错误地运行它,它也将独立运行,因为我告诉 Eclipse 所需的所有内容都将包含在 JAR 中。

        【讨论】:

          猜你喜欢
          • 2018-10-23
          • 1970-01-01
          • 1970-01-01
          • 2017-01-23
          • 2014-01-15
          • 1970-01-01
          • 1970-01-01
          • 2015-10-21
          • 2015-03-02
          相关资源
          最近更新 更多