2015-10-07 61 views
0

所以..這是推動我堅果。試圖讓MySQL在Java上工作的第2天,它仍然無法正常工作。的IntelliJ IDEA - 神器(JAR)MySQL的缺失

我在Windows上使用的IntelliJ IDEA(最新版本)開發一個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 

在此先感謝!

+0

您使用的構建腳本?如果是這樣,請將其包含在您的問題中 – leeor

回答

0

嵌套的jar文件不支持Java。您需要確保所有必需的庫都在您的類路徑中作爲單獨的jar或目錄。

如果你正在做一個企業應用程序,應用程序服務器通常應爲您提供的JDBC驅動程序,這意味着你需要配置正確並設置應用程序檢索使用JNDI的連接。

0

請檢查您的庫包含在您的MANIFEST.MF文件的類路徑。

例如:

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

我想我已經解決了這個問題,但我不知道究竟如何。在項目結構 - >工件下,我右鍵單擊庫(JAR)並選擇「提取到輸出根目錄」。我不知道這有什麼concequences,但至少在目前,這是工作,我可以繼續發展..

爲了記錄在案,這裏是我的.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>