【发布时间】:2016-12-11 19:39:53
【问题描述】:
我的第一个应用程序的结构很简单:
libs
opencsv-3.8.jar
yamlbeans-1.0.jar
out
artifacts
...
production
...
src
META-INF
MANIFEST.MF
pl.krzysiu
App.java
CsvReplacer.java
在编译和运行程序期间一切正常。在默认的 out\artifacts 目录中构建工件 jar 文件后,我得到
java.lang.NoClassDefFoundError: net/sourceforge/yamlbeans/YamlException
当我尝试通过 java -jar CsvReplacer.jar 命令运行它时
这些库包含在 jar 文件中(解压后就在其中) - 它们被添加到 Project Structure 中的 Libraries 部分(单独 - 每个文件一个文件lib),整个 libs 目录包含在 Modules 部分的 Dependencies 选项卡中(选中导出复选框)和 libs dir 类似地添加到 Artifacts 部分的 Output Layout 中。
清单文件包含:
Manifest-Version: 1.0
Class-Path: libs\yamlbeans-1.0.jar libs\opencsv-3.8.jar
Main-Class: pl.krzysiu.App
为什么应用程序看不到这些库?如果我手动将此目录复制到 CsvReplacer.jar 文件的位置 - 一切正常。
CsvReplacer.jar 文件中的结构如下:
libs
opencsv-3.8.jar
yamlbeans-1.0.jar
META-INF
MANIFEST.MF
pl
krzysiu
App.java
CsvReplacer.java
IDE:Intellij IDEA 2016.3
【问题讨论】:
标签: java intellij-idea jar noclassdeffounderror