小编Sha*_*gon的帖子

Eclipse没有使用NoClassDefFoundError引起的JUnit 5测试

问题

每当我运行我的项目JUnit测试(使用JUnit 5与Java 9和Eclipse Oxygen 1.a)我遇到eclipse无法找到任何测试的问题.

说明

在运行配置下,eclipse甚至找不到用@Test注释的方法,而是只显示" (所有方法) ".以下图片有望为我的设置提供更好的一瞥:

https://imgur.com/a/FTe9c

控制台输出:

java.lang.NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
    at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:31)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.base/java.lang.Class.newInstance(Unknown Source)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:368)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:363)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:307)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:222)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.launcher.core.LauncherFactory
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    ... 11 more
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试了什么

我已经试过了

  • 从构建路径中删除测试文件夹并再次添加.
  • 将鼠标悬停在使用@Test注释的方法上开始测试,然后单击"Run as JUnit Test".
  • 从Buildpath中删除JUnit并再次添加
  • 重启日食
  • 我还将项目整个项目从一台机器移动到另一台机器,并在那里使用提供的eclipse安装进行了尝试
  • 重命名测试方法.
  • 重新键入@Test注释

其中一些步骤可以在这里找到,但最终问题仍然存在.

java eclipse junit java-9 junit5

64
推荐指数
14
解决办法
7万
查看次数

在没有Maven或Gradle的情况下将JUnit 5与Java 9一起使用

说明:

我想在Eclipse中使用JUnit 5创建一个JUnit测试(Oxygen 4.7.1a).此JUnit测试应位于名为Test的单独src文件夹中.但是,由于我是JUnit和Java 9的新手,因此遇到了以下问题.

不想使用像Gradle或Maven这样的构建工具.

问题:

因为我有两个不同的src文件夹,一个用于项目src,另一个用于测试用例:

  • 我需要两个module-info.java文件吗?(每个src文件夹一个)
  • 我的module-info.java文件中需要哪些模块才能使JUnit 5工作?

java eclipse junit java-9 junit5

10
推荐指数
1
解决办法
1682
查看次数

CMake生成没有glob的源文件列表

我目前正在使用这段代码来生成我的 CMake 源文件列表来编译我的 C++ 项目:

file(GLOB CPP_FILES src/*.cpp)
Run Code Online (Sandbox Code Playgroud)

正如我在此处读到的,CMake 不鼓励这样做,我想知道是否可以使用 CMake明确列出CMake的源文件,因为我不熟悉 Python 等脚本语言。

我问这个是因为将所有 cpp 文件手动添加到 CMake 中需要做很多工作,尤其是在与多人合作时。

该项目与平台无关,我的源文件位于子文件夹中。

c++ cross-platform cmake visual-studio visual-studio-2017

7
推荐指数
1
解决办法
1万
查看次数

使用DataSource连接到带有(Xerial)sqlite-jdbc驱动程序的SQLite

Java Tutorial说有两种方法可以通过JDBC连接数据库:使用DriverManager类(旧的,不推荐使用)和使用DataSource类.

我不知道如何使用DriverManager做到这一点:

Connection con = DriverManager.getConnection("jdbc:sqlite:mytest.db");
...
Run Code Online (Sandbox Code Playgroud)

但我找不到如何通过JDBC使用DataSource for SQLite.SQLite(或JDBC驱动程序提供程序,我不知道如何正确调用它)支持使用DataSource吗?

我使用xerial/sqlite-jdbc驱动程序从java中使用SQLite(https://github.com/xerial/sqlite-jdbc)

我最好的猜测是我将使用org.sqlite.SQLiteDataSource类(它来自sqlite-jdbc-3.15.1.jar用于Xerial sqlite-jdbc驱动程序),但是怎么样?是这样吗?我也猜测,如何做到这一点应该是在Xerial驱动程序文档中,但它们只给出了如何使用DriverManager进行连接的示例.

所以我要求大师的帮助确认这个 Xerial驱动程序/ jar不支持DataSource语法,或者举例说明如何做,或者建议使用DataSource支持替代驱动程序(对于Java中的SQLite),或者建议否则...

Java教程

JDBC驱动程序管理器 - JDBC DriverManager类定义可以将Java应用程序连接到JDBC驱动程序的对象.DriverManager传统上一直是JDBC架构的支柱.它非常小而且简单.

标准扩展包javax.naming和javax.sql允许您使用在Java命名和目录接口(JNDI)命名服务中注册的DataSource对象来建立与数据源的连接.您可以使用任一连接机制,但建议尽可能使用DataSource对象.

java sqlite datasource jdbc

6
推荐指数
1
解决办法
5190
查看次数

我怎么知道Linux系统是否使用Wayland或X11?

用过的语言

我正在使用C++ 14和cmake来完成我的程序.

问题:

我想知道如何知道Linux系统是否使用Wayland或X11作为窗口系统,以便能够在我的源代码中使用这两个API而不会发生冲突.因此,当Wayland可用时,使用Wayland创建一个窗口,否则使用X11 API.

注意:我知道有XWayland,但是我想使用原生的X11和原生的Wayland而不喜欢XWayland.

编辑:澄清一些事情:我不想在编译时检查X11或Wayland ,而是在运行时,因为那时我只需要编译一次代码,它不需要用户考虑哪个要使用的版本.

c++ linux x11 wayland c++14

6
推荐指数
2
解决办法
2170
查看次数

Gradle 6 依赖项具有严格版本和because关键字

问题

我目前正在尝试 Gradle 6.0,并遇到了一个问题,我想将because语句与严格版本和拒绝版本的语法结合起来。

我的构建脚本:

dependencies {
    testImplementation(group: 'org.junit.jupiter', name: 'junit-jupiter-api') {
        version {
            strictly '[5.0, 6.0]'
            prefer '5.5.2'
            reject '5.5.1' // for testing purpose only
        }
    }

    testRuntimeOnly(group: 'org.junit.jupiter', name: 'junit-jupiter-engine') {
        version {
            strictly '[5.0, 6.0]'
            prefer '5.5.2'
            reject '5.5.1' // for testing purpose only
        }
    }

    // Force Gradle to load the JUnit Platform Launcher from the module-path
    testRuntimeOnly(group: 'org.junit.platform', name: 'junit-platform-launcher') {
        version {
            strictly '[1.5, 2.0]'
            prefer '1.5.2'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的

我目前尝试在because语句下方或上方添加 …

groovy dependency-management gradle build.gradle

5
推荐指数
1
解决办法
6785
查看次数

Java将比较器与自定义比较器结合使用

我想对以下示例列表进行排序,该列表当前仅包含具有我自己的自定义规则的字符串.

ArrayList<String> coll = new ArrayList<>();
coll.add("just");
coll.add("sdsd");
coll.add("asb");
coll.add("b as");
coll.add("just");
coll.add("dhfga");
coll.add("jusht");
coll.add("ktsa");
coll.add("just");
coll.add("just");
Run Code Online (Sandbox Code Playgroud)

我知道我可以写我自己比较这一点,但我知道,Java也得到了我想知道我怎么可以使用那些从Java API,它部分地解决了这个问题比较结合我自己的一个.


应该如何分类?

该单词just应始终是列表中出现的第一个单词,后面是按字母顺序排列的所有其他单词.

Comparator.naturalOrder()按字母顺序对列表进行排序,但是如何将此comperator与检查单词是否为just其他的自定义组合.

java sorting collections comparator java-8

4
推荐指数
1
解决办法
543
查看次数

Gradle 仅在定义的属性上运行任务

我正在努力让任务仅在定义特定值时执行。

我正在使用 Gradle 3.5。

task signJar(type: SignJar, dependsOn: reobfJar) {
    onlyIf {
        project.hasProperty('mod_keystore')
    }

    keyStore = project.keyStore
    alias = project.keyStoreAlias
    storePass = project.keyStorePass
    keyPass = project.keyStoreKeyPass
    inputFile = jar.archivePath
    outputFile = jar.archivePath
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我已经尝试了 onlyIf 语句,但任务仍在运行。这导致崩溃:

Could not get unknown property 'keyStore' for root project 'JustAnotherEnergy' of type org.gradle.api.Project.
Run Code Online (Sandbox Code Playgroud)

属性 ' mod_keystore ' 没有定义,但代码 get 被执行。

task signJar(type: SignJar, dependsOn: reobfJar) {
    if(project.hasProperty('mod_keystore')) {
        keyStore = project.keyStore
        alias = project.keyStoreAlias
        storePass = project.keyStorePass
        keyPass = project.keyStoreKeyPass
        inputFile = jar.archivePath
        outputFile …
Run Code Online (Sandbox Code Playgroud)

groovy conditional if-statement gradle gradlew

2
推荐指数
1
解决办法
8057
查看次数