标签: java-8

在Java中,使用PEM文件创建SSLContext的最简单方法是什么?

我使用LetsEncrypt的CertBot免费生成PEM文件.在其他语言中,只需使用几行代码和PEM /密钥文件即可轻松启动HTTPS服务器.到目前为止我在java中找到的解决方案过于复杂,我正在寻找更简单的东西.

  1. 我不想使用java的命令行"keytool".我只想将我的PEM /密钥文件拖放到我的eclipse中,并使用SSLContext以编程方式启动HTTPS服务器.
  2. 我不想包括像BouncyCastle这样的大型外部库.请参阅以下链接,了解使用BouncyCastle的假设解决方案: 如何从PEM证书和密钥构建SSLSocketFactory而不转换为密钥库?

有没有更好/更简单的方法来做到这一点?

java ssl https java-8 lets-encrypt

14
推荐指数
2
解决办法
3294
查看次数

如何在Mac OS上卸载JDK?

伙计们 - 我在尝试从我的MAC卸载JDK时面临挑战(macOS High Sierra版本10.13.4 - 17E199).我安装了两个JDK实例,我想卸载它们.

我按照此页面上列出的步骤操作:https://docs.oracle.com/javase/8/docs/technotes/guides/install/mac_jdk.html

我试图在/ Library/Java/JavaVirtualMachines目录中运行此命令,该目录抛出一个我没有权限的错误.

rm -rf jdk1.8.0_06.jdk
Run Code Online (Sandbox Code Playgroud)

我是该机器的管理员,我不确定我还需要什么权限.我作为管理员和root用户尝试没有成功.

请分享您对此的看法.

java macos java-8 java-10

14
推荐指数
4
解决办法
2万
查看次数

安装正确的Java后,MacOS上的Oracle SQLDeveloper将无法打开

我下载了Oracle SQLDeveloper,但是当我打开它时,它说它需要最少的Java 8并且给了我下载的网站.我继续下载Java 10.0.1,但当我重新打开SQL时,它继续说它需要最少的Java 8.

我检查了Java 10.0.1已经正确安装,我很确定它有.它显示在"系统偏好设置"中,单击此按钮可以打开Java控制面板.

我还发现有人建议尝试这个命令:

c:\Program Files\Oracle\sqlcl\17.3\sqlcl\bin>java -version
Run Code Online (Sandbox Code Playgroud)

在终端尝试这个之后,我最终得到了command not found.

我在MacOS X El Captain 10.11.6上.

java oracle macos oracle-sqldeveloper java-8

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

Java 10中的Java 10迁移8.在生产中运行服务

我们希望将所有生产服务从Java 8迁移到Java 10.据我所知,我们可能会面临构建(gradle等),依赖等问题以进行开发.但是当它只是JVM本身,即运行服务时,如果我们只是在生产中安装JVM 10来运行我们的jar服务,我们是否会遇到任何问题?

java jvm java-8 java-10

14
推荐指数
2
解决办法
1121
查看次数

Java流操作调用

任何人都可以指向官方Java文档,该文档描述了Stream将为每个元素调用每个"非干扰和无状态"中间操作的次数.

例如:

Arrays.asList("1", "2", "3", "4").stream()
        .filter(s -> check(s))
        .forEach(s -> System.out.println(s));

public boolean check(Object o) {
    return true;
} 
Run Code Online (Sandbox Code Playgroud)

以上目前将调用check方法4次.

是否有可能在JDK的当前版本或未来版本中,该check方法的执行次数多于或少于从List或任何其他标准Java API创建的流中的元素数量

java java-8 java-stream

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

Java Streams:关于收集到Map <String,Object>的问题

我遇到了一个问题:

我创建了这个我需要映射到的流Map<String, Object>:

private Map<String, Object> collectArguments(JoinPoint point) {
    CodeSignature signature = (CodeSignature) point.getSignature();
    String[] argNames = signature.getParameterNames();
    Object[] args = point.getArgs();

    return IntStream.range(0, args.length)
        .collect(Collectors.toMap(param -> argNames[param], param -> args[param]));
}
Run Code Online (Sandbox Code Playgroud)

我收到以下消息,我不太清楚:

[Java] Type mismatch: cannot convert from Collector<Object,capture#3-of ?,Map<Object,Object>> to Supplier<R>
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

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

如何在Java 8 Comparator中处理null和重复值?

我有一个Photo对象:

public class Photo {
    @Id
    private String id;
    private LocalDateTime created;
    private Integer poNumber;
}
Run Code Online (Sandbox Code Playgroud)

对于某些照片或集合中的所有照片,poNumber可以为null.我想根据poNumber对一组照片进行排序,以便最低的poNumber首先出现在排序集中.poNumber也可以在集合中重复.如果poNumber重复,则根据创建的排序(首先显示最早创建的照片).如果poNumber为null,则根据created进行排序.

我尝试了下面的代码:

Set<Photo> orderedPhotos = new TreeSet<>(
    Comparator.nullsFirst(Comparator.comparing(Photo::getPoNumber))
              .thenComparing(Photo::getCreated));

for (Photo photo : unOrderedPhotos) {
    orderedPhotos.add(photo);
}
Run Code Online (Sandbox Code Playgroud)

但是NullPointerException只要poNumber为null,它就会抛出一个.如果poNumber不为null,那么它可以正常工作.我该如何解决这个问题?

java comparator java-8

14
推荐指数
2
解决办法
546
查看次数

Java 8 Collectors.groupingBy with map value将收集结果设置为同一个集合

示例中使用的对象来自包 org.jsoup.nodes

import org.jsoup.nodes.Attribute;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
Run Code Online (Sandbox Code Playgroud)

我需要按键的组属性和结果值Set.

Optional<Element> buttonOpt = ...;
Map<String, Set<String>> stringStringMap =
    buttonOpt.map(button -> button.attributes().asList().stream()
            .collect(groupingBy(Attribute::getKey, 
                  mapping(attribute -> attribute.getValue(), toSet()))))
            .orElse(new HashMap<>());
Run Code Online (Sandbox Code Playgroud)

它似乎正确收集,但值始终是单个字符串(因为库实现)包含按空格分割的不同值.试图改善解决方案:

Map<String, Set<HashSet<String>>> stringSetMap = buttonOpt.map(
        button -> button.attributes()
            .asList()
            .stream()
            .collect(groupingBy(Attribute::getKey, 
                        mapping(attribute -> 
                          new HashSet<String>(Arrays.asList(attribute.getValue()
                                                                .split(" "))),
                   toSet()))))
  .orElse(new HashMap<>());
Run Code Online (Sandbox Code Playgroud)

结果我有不同的结构,Map<String, Set<HashSet<String>>>但我需要Map<String, Set<String>>

我已经检查了一些收藏家,但没有解决我的问题.

问题是:

如何合并与相同属性键相关的所有集合?

java lambda java-8 java-stream collectors

14
推荐指数
3
解决办法
1152
查看次数

模拟 Instant.now() 而不使用 Clock 进入构造函数或不使用 Clock 对象

我的方法之一中有以下代码

ZonedDateTime current = Instant.now().atZone(ZoneId.of(AMERICA_NEW_YORK));
Run Code Online (Sandbox Code Playgroud)

我想current在 JUnit 测试中进行模拟。

我尝试过,java.time.Clock但为此,我需要将其添加到类构造函数中,因为我的代码写入旧版本的 Spring 并使用基于 XML 的配置,此类会导致问题,因为它需要 application-context.xml 文件中的构造函数参数,如果我使用构造函数与Clock.

有没有办法避免current上面代码中的构造函数配置和模拟。

更新

根据帕维尔·斯米尔诺夫的评论,我在下面尝试过,但current仍然返回今天的日期,但不是我嘲笑的日期。

ZonedDateTime exactOneDay = ZonedDateTime.parse("Sun Oct 21 12:30:00 EDT  2018", Parser); 
doReturn(exactOneDay).when(spyEmployeeHelper).getCurrentTime();
employee = getEmployees().get(0);
assertEquals(Integer.valueOf(1), employee.getNoticePeriod());
Run Code Online (Sandbox Code Playgroud)

java junit java-8

14
推荐指数
2
解决办法
4万
查看次数

在 Java 限定类型中有注释 tmesis/inside 的目的是什么?

这有什么目的吗 static @NotNull @Other My.@NotNull @Other Builder createBuilder()

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;

public class A {
    static class My {
        static class Builder {
            public My build() {
                return new My(); } } }

    @Target({ElementType.METHOD, ElementType.TYPE_USE})
    public @interface NotNull { }

    @Target({ElementType.METHOD, ElementType.TYPE_USE})
    public @interface Other { }

    public static @NotNull @Other My.@NotNull @Other Builder createBuilder() {
        return new My.Builder();
    }
}
Run Code Online (Sandbox Code Playgroud)

java annotations java-8

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