每当我运行我的项目JUnit测试(使用JUnit 5与Java 9和Eclipse Oxygen 1.a)我遇到eclipse无法找到任何测试的问题.
在运行配置下,eclipse甚至找不到用@Test注释的方法,而是只显示" (所有方法) ".以下图片有望为我的设置提供更好的一瞥:
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)
我已经试过了
其中一些步骤可以在这里找到,但最终问题仍然存在.
我想在Eclipse中使用JUnit 5创建一个JUnit测试(Oxygen 4.7.1a).此JUnit测试应位于名为Test的单独src文件夹中.但是,由于我是JUnit和Java 9的新手,因此遇到了以下问题.
我不想使用像Gradle或Maven这样的构建工具.
因为我有两个不同的src文件夹,一个用于项目src,另一个用于测试用例:
我目前正在使用这段代码来生成我的 CMake 源文件列表来编译我的 C++ 项目:
file(GLOB CPP_FILES src/*.cpp)
Run Code Online (Sandbox Code Playgroud)
正如我在此处读到的,CMake 不鼓励这样做,我想知道是否可以使用 CMake明确列出CMake的源文件,因为我不熟悉 Python 等脚本语言。
我问这个是因为将所有 cpp 文件手动添加到 CMake 中需要做很多工作,尤其是在与多人合作时。
该项目与平台无关,我的源文件位于子文件夹中。
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),或者建议否则...
JDBC驱动程序管理器 - JDBC DriverManager类定义可以将Java应用程序连接到JDBC驱动程序的对象.DriverManager传统上一直是JDBC架构的支柱.它非常小而且简单.
标准扩展包javax.naming和javax.sql允许您使用在Java命名和目录接口(JNDI)命名服务中注册的DataSource对象来建立与数据源的连接.您可以使用任一连接机制,但建议尽可能使用DataSource对象.
我正在使用C++ 14和cmake来完成我的程序.
我想知道如何知道Linux系统是否使用Wayland或X11作为窗口系统,以便能够在我的源代码中使用这两个API而不会发生冲突.因此,当Wayland可用时,使用Wayland创建一个窗口,否则使用X11 API.
注意:我知道有XWayland,但是我想使用原生的X11和原生的Wayland而不喜欢XWayland.
编辑:澄清一些事情:我不想在编译时检查X11或Wayland ,而是在运行时,因为那时我只需要编译一次代码,它不需要用户考虑哪个要使用的版本.
我目前正在尝试 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
语句下方或上方添加 …
我想对以下示例列表进行排序,该列表当前仅包含具有我自己的自定义规则的字符串.
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
其他的自定义组合.
我正在努力让任务仅在定义特定值时执行。
我正在使用 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) java ×4
c++ ×2
eclipse ×2
gradle ×2
groovy ×2
java-9 ×2
junit ×2
junit5 ×2
build.gradle ×1
c++14 ×1
cmake ×1
collections ×1
comparator ×1
conditional ×1
datasource ×1
gradlew ×1
if-statement ×1
java-8 ×1
jdbc ×1
linux ×1
sorting ×1
sqlite ×1
wayland ×1
x11 ×1