小编ded*_*per的帖子

KeyCloak 服务器导致:java.lang.ClassNotFoundException:java.security.acl.Group

我正在运行 KeyCloak 服务器来验证想要访问 Spring Boot/Spring Web REST API 的用户。但是,尝试进行身份验证时发生错误。

以下工作:

  • 当我访问 http://localhost:8080/path/to/restapi
  • 我得到了预期的登录屏幕: -- KeyCloak 登录屏幕
  • 当我单击登录时,浏览器中的重定向发生以下错误:

白标错误页面 此应用程序没有明确的 /error 映射,因此您将其视为后备。

这是打印到 Spring Boot 控制台的错误:

Caused by: java.lang.ClassNotFoundException: java.security.acl.Group
  at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602) ~[na:na]
  at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
  at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na]
  ... 33 common frames omitted
Run Code Online (Sandbox Code Playgroud)

KeyCloak 服务器显示该会话对于该应用程序的用户来说是活动的。但是,由于上述缺少的类,认证过程永远不会完成。

classnotfoundexception spring-boot keycloak java-11 java-14

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

在 docker 中启动 keycloak 时出现“您需要本地访问权限才能创建初始管理员用户”错误

在 docker 上启动 keycloak 服务器时,我收到此错误:“您需要本地访问权限才能创建初始管理员用户”。但是在本地运行它,它工作正常。

另一件事是,如果我想使用 Postgres db 而不是嵌入式 H2 db,那么我应该创建表来存储用户、客户端和范围等吗?如果是,我怎样才能获得所有表的数据库结构?

您需要本地访问权限才能创建初始管理员用户

postgresql docker keycloak

9
推荐指数
4
解决办法
4995
查看次数

可选的泛型类型参数

我要声明一个泛型类,将上三胞胎的工作- keyvaluemetadata

keyvalue字段是强制性的,但该metadata字段是可选的。

class Triplet<K,V,M>{
    K key;
    V value;
    M metadata;
    //setters and getters
}
Run Code Online (Sandbox Code Playgroud)

在使用上面的类时,我必须像下面一样初始化它 -

Triplet<Integer, String, String> t1 = new Triplet<>();
// Setters
Run Code Online (Sandbox Code Playgroud)

但对于某些用例metadata是可选的。所以当我null用作第三个类型参数时,编译器给出了一个错误 -

Triplet<Integer, String, null> t2 = new Triplet<>();
Run Code Online (Sandbox Code Playgroud)

我应该如何正确实例化适用于多种类型的参数化类型,其中使用站点指定的类型参数之一是可选的?

java generics java-8

8
推荐指数
3
解决办法
362
查看次数

Gradle 测试装置插件和核心模块依赖项

我有一个使用 Gradle 6.4 版和 JDK 8 构建的项目。我正在尝试将 Gradle插件用于测试装置( java-test-fixtures),但我在依赖项方面遇到了一些问题。

根据上面链接的 Gradle 页面,该项目的结构应如下所示:

core-module
-- src
   -- main
      -- java
   -- test
      -- java
   -- testFixtures
      -- java
Run Code Online (Sandbox Code Playgroud)

虽然该build.gradle.kts文件具有以下依赖项部分:

core-module
-- src
   -- main
      -- java
   -- test
      -- java
   -- testFixtures
      -- java
Run Code Online (Sandbox Code Playgroud)

现在,在testFixtures/java源文件夹中的 IntelliJ(我正在使用的 IDE)类中查看源文件夹中的类main/java。所以我可以在下面添加新的 Java 类testFixtures/java,这些类依赖于main. 但是,我将无法从外部库导入依赖项com.my.external.project:1.0。当我尝试运行 Gradle 任务时,问题得到确认compileTestFixturesJava

我可以复制该dependencies部分中的条目;例如我可以添加:

dependencies {
    api("com.my.external.project:1.0")
    // ... more API dependencies

    testFixturesCompileOnly(project(":core-module")) …
Run Code Online (Sandbox Code Playgroud)

java dependency-management gradle gradle-kotlin-dsl java-test-fixtures

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

如何从非模块化依赖项的 GAV 坐标中编写 module-info requires 语句?

我正在将旧的 Java 应用程序转换为模块化的应用程序。它是一个 Gradle 项目,依赖项如下所示:

dependencies {
    implementation 'org.jopendocument:jOpenDocument:1.3'
    implementation 'xom:xom:1.3.2'
}
Run Code Online (Sandbox Code Playgroud)

在 App 类中,我的导入是:

dependencies {
    implementation 'org.jopendocument:jOpenDocument:1.3'
    implementation 'xom:xom:1.3.2'
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个 module-info.java 文件。但是当我这样做时,我的应用程序将无法编译,因为requiresmodule-info 文件中的指令是错误的。

import nu.xom.Document;
import nu.xom.Element;
import nu.xom.Serializer;
import org.jopendocument.dom.spreadsheet.MutableCell;
import org.jopendocument.dom.spreadsheet.Sheet;
import org.jopendocument.dom.spreadsheet.SpreadSheet;
Run Code Online (Sandbox Code Playgroud)

模块名称xomjOpenDocument不足。但是我不知道这些依赖项应该是什么,也不知道如何重新配置​​ Gradle;如果那是我需要做的。

当我省略任一requires语句时,相应的imports 无法解析。我没有查看 JAR 文件。但我不认为任何一个工件是模块化的。

我正在使用 Gradle 5.6.2,我的目标是 Java 11。

java java-platform-module-system java-module module-info java-11

5
推荐指数
0
解决办法
115
查看次数

使用继承时 Spring Boot Swagger 重复模型类型

我有一个使用 Spring Boot 和 Swagger 的 Java 项目。该项目由一个实现单个端点的简单 API 控制器组成。GET调用端点上的方法获取所有用户。在同一端点上调用该PUT方法会更新单个用户:

@RestController
@RequestMapping("/api/v1/users")
public class UserController {
    @RequestMapping(value = "", method = RequestMethod.GET)
    public List<BaseUser> getUsers(String name) {
        return null;
    }

    @RequestMapping(value = "", method = RequestMethod.PUT)
    public BaseUser updateUser(@RequestBody BaseUser user) {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

端点/api/v1/users是使用BaseUser具有如下子类型的a 实现的EmployeeUser

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
@JsonSubTypes({
        @JsonSubTypes.Type(value = EmployeeUser.class, name = "employee")
})
public abstract class BaseUser {

    private final int …
Run Code Online (Sandbox Code Playgroud)

java spring swagger spring-boot springfox

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

是否有一些仅流的方法来确定最大流元素的索引?

我有一个Stream<Set<Integer>> intSetStream.

我可以这样做...

Set<Integer> theSetWithTheMax = intSetStream.max( (x,y)->{ return Integer.compare( x.size(), y.size() ); } ).get( );
Run Code Online (Sandbox Code Playgroud)

...我掌握了其中元素Set<Integer>数量最多的Integer那个。

那太棒了。但我真正需要知道的是,这是第一次SetStream这最大?或者是10日SetStream?还是iSet?其中哪一个元素最多?

所以我的问题是:有没有一些方法-使用Stream API -我可以确定“这是iSetStreamSet传回他们所有的最大价值,为氏Set.size( )呼叫”?

我能想到的最佳解决方案是迭代Stream<Set<Integer>>(使用intSetStream.iterator())并进行手动max( )计算。但我希望学习更多Stream-y 的方法;如果有这样的事情。

java-8 java-stream

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