小编Mar*_*cuX的帖子

@ApplicationScoped 必须是可序列化的?

我现在正在学习Java EE 7 教程中的 CDI 范围,并发现在最后一段中它说

使用会话、应用程序或对话范围的 Bean 必须是可序列化的,但使用请求范围的 Bean 不必是可序列化的。

但让我很困惑的是,在我的 IDE(Netbeans 和 IntelliJ Idea)中,当我使用 @SessionScoped 或 @ConversationScoped 时,如果我没有像 Java EE 7 教程中所说的那样实现可序列化,它确实会给我一个错误,显然,我无法构建该项目然后运行它。当我使用 @ApplicationScoped 但没有实现 Serialized 时,事情变得很奇怪,没有错误出现,我可以正常构建然后运行应用程序。

所以我对此很好奇,也很想知道为什么。您能解释一下那里发生了什么吗?太感谢了!

java serialization cdi jakarta-ee

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

JUnit 5 ConsoleLauncher 不起作用

我有一个 DisplayNameDemo.java 文件,如下所示

显示名称演示程序

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

@DisplayName("A special test case")
public class DisplayNameDemo {

    @Test
    @DisplayName("Custom test name containing spaces")
    void testWithDisplayNameContainingSpaces() {
    }

    @Test
    @DisplayName("?°?°??")
    void testWithDisplayNameContainingSpecialCharacters() {
    }

    @Test
    @DisplayName(" ")
    void testWithDisplayNameContainingEmoji() {
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我将它编译为 .class 文件使用

javac -cp .:junit-platform-console-standalone-1.0.0.jar DisplayNameDemo.java
Run Code Online (Sandbox Code Playgroud)

这个命令执行成功?我得到了一个 DisplayNameDemo.class 文件。

之后,我运行了如下所示的命令

java -jar junit-platform-console-standalone-1.0.0.jar --select-class DisplayNameDemo.class
Run Code Online (Sandbox Code Playgroud)

但它失败了并说“org.junit.platform.commons.util.PreconditionViolationException:无法加载名称为:DisplayNameDemo.class的类”

错误信息

请帮帮我,非常感谢!

java junit command-line junit5

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

标签 统计

java ×2

cdi ×1

command-line ×1

jakarta-ee ×1

junit ×1

junit5 ×1

serialization ×1