gpt4 book ai didi

java - 如果运行 JSF 应用程序时未通过 Maven 添加,IntelliJ 是否不使用外部 Jar?

转载 作者:行者123 更新时间:2023-11-28 22:06:40 25 4
gpt4 key购买 nike

我有一行非常简单的代码,它是从 .xhtml 文件(在 JSF 2.0 项目中)调用的,如下所示:

try {
Class.forName("com.mysql.jdbc.Driver");
}catch(Exception e) {
e.printStackTrace();
}

所以在我的 C:\文件夹中有文件:mysql-connector-java-5.1.24-bin。我已将此 jar 添加为 IntelliJ Idea 12 中的外部 jar。

当我像这样启动我的应用程序时,我收到“未找到类异常”。但是,当我将此依赖项添加到我的 pom.xml 文件时:

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>

我没有发现异常,类加载正常。

这是一个截图:enter image description here

我用绿色下划线的jar文件是从**File -> Project Structure -> Libraries **外部添加的Jar

我用红色下划线的是maven下载的jar文件。

我的问题是:尽管我已经在外部添加了 Jar,但为什么我会得到 Class not found 异常?

如果我需要一个无法通过 maven 下载的 Jar 文件,我该怎么办?

一个额外的信息:我创建了一个只有一个类的示例 Java 项目,并使用上面解释的方法添加了这个外部 Jar 文件。没有 maven,没有 tomcat,什么都没有。只是一个简单的主要方法。我运行了相同的代码,并且运行良好。所以它必须与 IntelliJ 以及以下一项或多项有关:

  • 专家
  • Tomcat(部署 War 文件)
  • Maven 和 Tomcat?

编辑:当我仅添加外部 Jar 时 并尝试从 com.mysql.jdbc 导入一个类...IntelliJ IDEA 没有出现任何警告/错误。它找到了该类,但是在部署之后,似乎再也找不到该类了。

最佳答案

Web 应用已部署并运行在 tomcat 上。 Tomcat 不关心 IntelliJ 源项目中的 jar。对tomcat来说重要的是部署的webapp的WEB-INF/lib目录下的jar文件集。只有那些 jar 位于 Web 应用程序的类路径中。

我不太了解 IntelliJ 如何构建和部署 Web 应用程序,尤其是当使用 Maven 时。但我猜它只会部署 Maven 项目的编译和运行时范围内的 jar。对于外部 jar,可能可以配置 IntelliJ 项目以将其包含在构建和部署的存档中。

但是无论如何,如果你使用 Maven,你必须能够在不使用 IntelliJ 的情况下构建你的 war 。这就是构建工具的全部意义所在:它用于在没有 IDE 的情况下构建项目。所以所有必要的 jar 必须被 Maven 知道。因此,如果 jar 在 Maven 中心不可用,则应添加到您自己的本地 Maven 存储库(至少),或者添加到您公司的私有(private)存储库。

关于java - 如果运行 JSF 应用程序时未通过 Maven 添加,IntelliJ 是否不使用外部 Jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16113789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com