gpt4 book ai didi

java - 使用 gradle 构建并尝试使用 com.google.code.gson 时出现 ClassNotFoundException

转载 作者:行者123 更新时间:2023-11-30 06:55:15 27 4
gpt4 key购买 nike

我是 Java 项目和 gradle 的新手。我正在尝试使用 Google 的 GSON 来解析 JSON 字符串。

当我导航到 my-project-name/build/classes/main/

运行时出现 ClassNotFoundException

$ java GetGroupMeMessages 

这是堆栈跟踪(这就是它的名字,对吧?):

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/gson/Gson
at GetGroupMeMessages.main(GetGroupMeMessages.java:59)
Caused by: java.lang.ClassNotFoundException: com.google.gson.Gson
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more

我的 build.gradle 文件如下所示:

apply plugin: 'java'
apply plugin: 'eclipse'

sourceCompatibility = 1.8
version = '1.0'
jar {
manifest {
attributes 'Implementation-Title': 'gscc-groupme-logs',
'Implementation-Version': version
}
}

repositories {
mavenCentral()
}

dependencies {
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.8.6'
compile group: 'commons-collections', name: 'commons-collections', version: '3.2.2'
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.0'
testCompile group: 'junit', name: 'junit', version: '4.+'
}

test {
systemProperties 'property': 'value'
}

uploadArchives {
repositories {
flatDir {
dirs 'repos'
}
}
}

我正在通过命令行执行所有操作。我已将文件保存在 my-project-name/src/main/java/下

非常感谢任何帮助!我被困住了。

最佳答案

如果您想从命令行运行单个 java 文件,则需要在命令中使用 -cp jar_location 提供 gson jar 作为类路径。

如果你想运行构建 jar:

在配置中将依赖项从编译更改为运行时。

dependencies {
runtime group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.8.6'
runtime group: 'commons-collections', name: 'commons-collections', version: '3.2.2'
runtime group: 'com.google.code.gson', name: 'gson', version: '2.8.0'
testCompile group: 'junit', name: 'junit', version: '4.+'
}

更改您的 jar 配置,如下所示:

jar {
manifest {
attributes(
'Implementation-Title': 'gscc-groupme-logs',
'Implementation-Version': version
'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
'Main-Class': 'GetGroupMeMessages'
)
}
}

创建 jar 后,使用 java -jar jarname 命令运行它。

关于java - 使用 gradle 构建并尝试使用 com.google.code.gson 时出现 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41969803/

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