小编Man*_*ani的帖子

如何为名称中带有" - "(连字符)的工件添加"要求"

我在Maven pom.xml中包含了这些依赖项:

 <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>${httpclient.version}</version>
</dependency>

<dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我试图在module-info.java中添加这种依赖,如下所示:

module io.github.wildcraft.restclient {
    requires httpcore; // no compilation problem
    requires httpclient; // no compilation problem
    requires commons-io; // shows compilation error
}
Run Code Online (Sandbox Code Playgroud)

对于commons-io,我收到编译错误.我怎样才能做到这一点?

java maven java-platform-module-system java-9 java-module

21
推荐指数
2
解决办法
1160
查看次数

Java:调用名称存储在变量中的方法

我有一个要求:

String command = "click";   // this can have value such as clear, getLocation, getSize, getTagName etc. 
WebDriver driver = new ChromeDriver(options); //creating a webdriver object
driver.findElement(By.id("id1")).click(); //Here I want "click" method should be called dynamically as per what I have stored in variable `command`.
Run Code Online (Sandbox Code Playgroud)

那么,是否有可能像:

driver.findElement(By.id("id1")).<something to call click()>
Run Code Online (Sandbox Code Playgroud)

我已经看过Java中的Reflection,但根据我的要求,这看起来很复杂.任何指针都会有所帮助!

java selenium

16
推荐指数
3
解决办法
3008
查看次数

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 9模块导出所有包?

现在,对于我拥有的每个模块,我需要明确指定要导出的包.例如:

module core {
    exports cc.blynk.server.core;
    exports cc.blynk.server.core.protocol.handlers.decoders;
    exports cc.blynk.server.core.protocol.handlers.encoders;
}
Run Code Online (Sandbox Code Playgroud)

但是,它不是很方便.我想做那样的事情:

module core {
    exports cc.blynk.server.core.*;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?这种限制来自哪里?

java java-9 java-module

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

有什么用Map.ofEntries()而不是Map.of()

Map.java的文档-

Map.of()Map.ofEntries()静态工厂方法提供了一种方便的方法来创建不可改变的地图.

但是当我已经可以使用重载方法时 ......

Map.of("k1","v1","k2","v2","k3","v3"...);
Run Code Online (Sandbox Code Playgroud)

... Map.ofEntries的用途是什么呢?

返回包含从给定条目中提取的键和值的不可变映射,并且条目本身不存储在映射中.

java hashmap java-9

10
推荐指数
3
解决办法
7948
查看次数

如何运行JShell文件?

我想用JShell运行整个文件,如:

$ jshell my-jshell-skript.java
Run Code Online (Sandbox Code Playgroud)

例如,在哪里我的内容my-jshell-skript.java40 + 2;.

或者可选的可执行文件:

#!/usr/bin/jshell
40 + 2
Run Code Online (Sandbox Code Playgroud)

现在这可能吗?还是我仍然需要采用Java-Main-Class的旧方法?

编辑1:Windows问题

在Windows上,我仍然没有解决方案:

C:\JDKs\jdk9.0.0.0_x64\bin>type foo.jsh
1 + 1

C:\JDKs\jdk9.0.0.0_x64\bin>jshell.exe foo.jsh
|  Welcome to JShell -- Version 9
|  For an introduction type: /help intro

jshell> /exit
|  Goodbye

C:\JDKs\jdk9.0.0.0_x64\bin>
Run Code Online (Sandbox Code Playgroud)

JShell开始完全忽略我的文件.这是一个错误吗?

编辑2:Windows问题的解决方案

事实证明这是我的foo的内容.似乎1 + 1只能"在运行中"工作,而不是从文件中读取:

C:\JDKs\jdk9.0.0.0_x64\bin>type foo.jsh
System.out.println("foo");

C:\JDKs\jdk9.0.0.0_x64\bin>jshell.exe foo.jsh
foo
|  Welcome to JShell -- Version 9
|  For an introduction type: /help intro

jshell> /exit
|  Goodbye

C:\JDKs\jdk9.0.0.0_x64\bin>
Run Code Online (Sandbox Code Playgroud)

java java-9 jshell

9
推荐指数
2
解决办法
2723
查看次数

如果使用Optional类执行else代码

我在这里看了一个Optional类的教程 - https://www.geeksforgeeks.org/java-8-optional-class/,它有以下内容

String[] words = new String[10];
Optional<String> checkNull = Optional.ofNullable(words[5]);
if (checkNull.isPresent()) {
    String word = words[5].toLowerCase();
    System.out.print(word);
} else{
    System.out.println("word is null");
}
Run Code Online (Sandbox Code Playgroud)

我试图通过ifPresent检查Optionalas 来减少行数

Optional.ofNullable(words[5]).ifPresent(a -> System.out.println(a.toLowerCase()))
Run Code Online (Sandbox Code Playgroud)

但是无法进一步获得其他部分

Optional.ofNullable(words[5]).ifPresent(a -> System.out.println(a.toLowerCase())).orElse();// doesn't work```
Run Code Online (Sandbox Code Playgroud)

有办法吗?

java optional java-8

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

JDK 9 + Mac OS + jlink?

我在Mac OS上安装了JDK 9的发行版.

jshell工作得很好,Jigsaw模块支持工作,但没有jlink:

?  java --version
java 9
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
Run Code Online (Sandbox Code Playgroud)

这是空的:

find /System/Library/Frameworks/JavaVM.framework/Versions/Current/ -iname jlink\*
Run Code Online (Sandbox Code Playgroud)

供参考:

?  ls -l $(which java)
lrwxr-xr-x  1 root  wheel  74 Nov  7  2016 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
Run Code Online (Sandbox Code Playgroud)

java macos jlink java-platform-module-system java-9

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

Java 9 HttpClient java.lang.NoClassDefFoundError:jdk/incubator/http/HttpClient

我正在尝试使用Java 9 maven项目中的孵化器中的HttpClient.我没有得到任何编译问题.该项目成功建立.但是当我尝试运行Main类时,它给了我以下异常:

Exception in thread "main" java.lang.NoClassDefFoundError: jdk/incubator/http/HttpClient
at java9.http_client.Main.main(Main.java:18)
Caused by: java.lang.ClassNotFoundException: jdk.incubator.http.HttpClient
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)....
Run Code Online (Sandbox Code Playgroud)

我的代码只是一个模块信息文件和一个只调用google.com并试图读取响应的Main类:

module-info.java

module java9.http_client {   
    requires jdk.incubator.httpclient;
}
Run Code Online (Sandbox Code Playgroud)

Main.java

public final class Main {

public static void main(String[] args) {
 try {
        HttpClient client = HttpClient.newHttpClient();
        URI httpURI = new URI("http://www.google.com/");
        HttpRequest request = HttpRequest.newBuilder(httpURI).GET().build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandler.asString());

        String responseBody = response.body();
        int responseStatusCode = response.statusCode();
        System.out.println(responseBody + "\n" + responseStatusCode);

    } catch (URISyntaxException | IOException | …
Run Code Online (Sandbox Code Playgroud)

java java-9 java-module java-http-client

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

Java11中的谓词过滤所有元素

我正在使用Java11.学习一种新的方法Predicate.not,我发现我目前的代码只找到猫科:

List<String> animals = List.of("cat", "leopard", "dog", "lion", "horse");
Predicate<String> cats = a -> !a.equals("dog") && !a.equals("horse");
Set<String> filterCat = animals.stream().filter(cats).collect(Collectors.toSet());
System.out.println(filterCat);
Run Code Online (Sandbox Code Playgroud)

输出是:

豹,猫,狮子

现在我正在尝试使用新方法,输出结果不正确.我该如何纠正?我做错了什么?

我后来的代码:

Predicate<String> updatedCatFilter = Predicate.not(a -> a.equals("dog") && a.equals("horse"));
Set<String> catFamily = animals.stream().filter(updatedCatFilter).collect(Collectors.toSet());
System.out.println(filterCat);
Run Code Online (Sandbox Code Playgroud)

但是现在输出我的所有列表.

马,豹,猫,狗,狮子

java predicate functional-interface java-11

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