- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 IntelliJ
ide 中创建了一个简单的 Java
程序。我使用了几个库,当我尝试将 jar 导出为工件并从命令行运行它时,出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/util/concurrent/FutureCallback
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2615)
at java.lang.Class.getMethod0(Class.java:2856)
at java.lang.Class.getMethod(Class.java:1668)
at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
Caused by: java.lang.ClassNotFoundException: com.google.common.util.concurrent.FutureCallback
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 6 more
在 IntelliJ
中编译和运行程序效果很好。
我的项目配置为 gradle
项目,具有以下 build.gradle
:
group 'marianpavel.com'
version '1.0'
apply plugin: 'java'
sourceCompatibility = 1.5
repositories {
mavenCentral()
maven {
url "http://repo.bastian-oppermann.de"
}
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
compile 'de.btobastian.javacord:javacord:2.0.11'
compile 'ch.qos.logback:logback-classic:1.0.13'
compile 'de.btobastian.sdcf4j:sdcf4j-core:1.0.2'
compile 'de.btobastian.sdcf4j:sdcf4j-javacord:1.0.2'
compile 'org.jsoup:jsoup:1.9.2'
}
我已按如下方式导出 jar:项目结构 -> 工件 -> Jar -> 从具有依赖项的模块 -> 添加主源文件夹和库文件中的所有库,添加 list 和主类并导出 jar 。
几天来我一直在努力解决这个问题,但我不明白为什么它找不到 class
。
最佳答案
我认为你这边有误解。
您的项目由两个重要部分组成:
当您在 IDE 中运行您的项目,并且您的项目设置正确时,两者都在您的类路径中。
但是当您为您的项目创建一个JAR 时,这在很大程度上取决于您的设置。意思是:“默认”是为您的项目创建的 JAR仅包含“1”。部分。因为您不希望首先将所有外部类添加到“您的”JAR。
因此,要解决这个问题:当您想在命令行上从 JAR 运行程序时,您还需要将所有那些外部 JAR 放在您的类路径中!因为,如前所述:要运行,您需要在类路径中同时出现“1”和“2”部分。
结论:您应该检查 gradle 在它为您创建的 JAR 中放入了什么。我很确定:那个 JAR 只包含“1”。
(郑重声明,这样很好。可以将所有内容打包到一个 jar 中,但这需要您自己动手)
关于Java jar 在运行时找不到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39587781/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!