【问题标题】:IntelliJ IDEA - mysql in artifact (JAR) missingIntelliJ IDEA - 缺少工件(JAR)中的 mysql
【发布时间】:2015-10-07 21:03:00
【问题描述】:

所以.. 这让我发疯了。尝试让 mysql 在 Java 上运行的第 2 天,但仍然无法正常工作。

我正在使用 IntelliJ IDEA(最新版本)在 Windows 上开发 Java 应用程序,将其导出为 JAR(构建工件)并在 Ubuntu 服务器上运行。

在 IDEA (Windows) 中选择运行会导致包含库 (mysql-connector-java-5.0.8),因为程序找不到数据库。 但是,当我上传 JAR(工件)时,我得到:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

我几乎尝试过任何方法,但在花了将近 16 个小时后,我别无选择,感到非常沮丧。我已经阅读了这里的大部分帖子并尝试了所有帖子,但没有一个有效。

查看 JAR 的大小,库正在被包含;只是不被 Ubuntu 识别。也许我需要使用某种命令参数来启用库?以下是我运行 JAR 的方式:

java -jar output.jar

提前致谢!

【问题讨论】:

  • 您使用的是构建脚本吗?如果是这样,请将其包含在您的问题中

标签: java intellij-idea mysql-connector artifact


【解决方案1】:

我想我已经解决了这个问题,但我不知道如何解决。在 Project Structure -> Artifacts 下,我右键单击库 (JAR) 并选择“Extract Into Output Root”。我不知道这是否有任何后果,但至少现在它正在工作,我可以继续开发..

为了记录,这是我的 .IML 文件:

<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
  <component name="NewModuleRootManager" inherit-compiler-output="false">
    <output url="file://$MODULE_DIR$/production" />
    <output-test url="file://$MODULE_DIR$/test" />
    <exclude-output />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
      <excludeFolder url="file://$MODULE_DIR$/.idea" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="module-library" exported="">
      <library>
        <CLASSES>
          <root url="file://$MODULE_DIR$/libs" />
        </CLASSES>
        <JAVADOC />
        <SOURCES />
        <jarDirectory url="file://$MODULE_DIR$/libs" recursive="false" />
      </library>
    </orderEntry>
    <orderEntry type="library" name="mysql:mysql-connector-java:5.1.36" level="project" />
  </component>
</module>

【讨论】:

    【解决方案2】:

    Java 不支持嵌套 jar 文件。您需要确保所有必需的库都作为单独的 jar 或目录在您的类路径中。

    如果您正在制作企业应用程序,您的应用程序服务器通常应该为您提供 JDBC 驱动程序,这意味着您需要正确配置它并设置您的应用程序以使用 jndi 检索连接。

    【讨论】:

      【解决方案3】:

      请检查您的库是否包含在您的 MANIFEST.MF 文件的类路径中。

      例如:

      Manifest-Version: 1.0
      Class-Path: mysql-connector
      Main-Class: some.package.mainClass
      

      【讨论】:

        猜你喜欢
        • 2012-05-02
        • 2022-10-06
        • 2016-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-29
        • 2013-11-01
        • 2018-09-07
        相关资源
        最近更新 更多