我想使用gradle将整个应用程序打包到一个.jar文件中。但似乎没有用。
这是我的build.gradle文件:
group 'imgscrapper'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'java-library-distribution'
sourceCompatibility = 1.5
repositories {
mavenCentral()
}
jar {
manifest {
sourceSets.main.java.srcDirs = ['Main/src']
attributes 'Main-Class': 'imgscrapper.Main'
}
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
compile 'org.jsoup:jsoup:1.9.2'
compile 'com.intellij:forms_rt:7.0.3'
}
和目录树:
.
├── production
│ └── Main
│ ├── com
│ │ └── intellij
│ │ └── uiDesigner
│ │ └── core
│ │ ├── AbstractLayout.class
│ │ ├── DimensionInfo.class
│ │ ├── GridConstraints.class
│ │ ├── GridLayoutManager.class
│ │ ├── HorizontalInfo.class
│ │ ├── LayoutState.class
│ │ ├── Spacer.class
│ │ ├── SupportCode.class
│ │ ├── SupportCode$TextWithMnemonic.class
│ │ ├── Util.class
│ │ └── VerticalInfo.class
│ └── imgscrapper
│ ├── Frame$1.class
│ ├── Frame$2.class
│ ├── Frame$3.class
│ ├── Frame$4.class
│ ├── Frame$5.class
│ ├── Frame.class
│ ├── GetImages.class
│ └── Main.class
└── test
└── Main
└── com
└── intellij
└── uiDesigner
└── core
├── AbstractLayout.class
├── DimensionInfo.class
├── GridConstraints.class
├── GridLayoutManager.class
├── HorizontalInfo.class
├── LayoutState.class
├── Spacer.class
├── SupportCode.class
├── SupportCode$TextWithMnemonic.class
├── Util.class
└── VerticalInfo.class
据我所知,gradle应该自己将jsoup导入包中,但是当我尝试运行我的jar文件时,我得到了:
java.lang.NoClassDefFoundError: org/jsoup/nodes/Document
我做错了什么?
答案 0 :(得分:1)
不,这不是它的工作原理。依赖关系不会添加到开箱即用的jar文件中。
要解决此问题,您需要构建一个胖jar(使用this插件)或使用application插件(通过gradle随分发一起提供)。