标签: jshell

尝试在Eclipse Oxygen中的Java中使用jdk.incubator.http.HttpClient时出现NoClassDefFoundError

这是我使用的代码片段:

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder(URI.create("https://www.google.com")).GET().build();
HttpResponse.BodyHandler responseBodyHandler = HttpResponse.BodyHandler.asString();
HttpResponse response = client.send(request, responseBodyHandler);
System.out.println("Status code = " + response.statusCode());

String body = response.body().toString();
System.out.println(body);
Run Code Online (Sandbox Code Playgroud)

NoClassDefFoundError当我运行上面的代码时,Eclipse抛出HttpClient。但是,当我将与一起使用时,此功能可以完美--add-modules=jdk.incubator.httpclient。怎样才能使代码通过Eclipse执行?

java eclipse http2 jshell java-http-client

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

JShell美元变量名称编号

当我在JShell(9.0.1)中输入表达式时,它返回:

$22 -> <value>
Run Code Online (Sandbox Code Playgroud)

22的来源是什么,1美元到21美元之间发生了什么?(它们是未定义的。)

我似乎隐约记得(当我从Java 9.0开始时)变量以$ 1开头,这更有意义。现在,从9.0.1起,它们全部以22美元开始。为什么?

java java-9 jshell

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

禁用JShell历史记录

默认情况下,JShell启用所有键入内容的持久性历史记录,可以通过按向上箭头来调用它。

设置此功能的位置在哪里?掉?

另外,如何清除当前历史记录?也许我很笨,但我不知道命令。/reset似乎无能为力。

java jshell

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

为什么我不能导入太阳包?

我从https://jdk9.java.net下载了java 9 并将其安装在我的Windows 10机器上.
Java 9有jshell,我可以用来评估和学习java编程.
一些示例导入sun包,例如sun.audio.*等等.但是,在jshell中,每次我尝试导入任何sun包时,都会说sun包不存在.

有些应用程序不能与java 9一起使用.也许有不兼容性?

java import java-package java-9 jshell

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

jshell - 无法找到printf

为什么我的jshell实例(JDK Version 9-ea)无法识别printf()语句?以下是我观察到的错误,

jshell> printf("Print number one - %d",1)
|  Error:
|  cannot find symbol
|    symbol:   method printf(java.lang.String,int)
|  printf("Print number one - %d",1)
|  ^----^
Run Code Online (Sandbox Code Playgroud)

我可以访问printf,只要我以常规方式指定它.

jshell> System.out.printf("Print number one - %d",1)
Print number one - 1$1 ==> java.io.PrintStream@1efbd816
Run Code Online (Sandbox Code Playgroud)

有什么指针吗?

java-9 jshell

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

抛出异常后,jshell继续执行我的脚本.怎么让它停下来?

我尝试编写一些jshell脚本.抛出异常时,jshell仍继续执行下一行.

如何让我的脚本更像普通的java程序?

编辑:我只是像运行它一样jshell SCR.jsh.

使用throw new Exception()1/0不阻止执行下一行.

该脚本包含如下语句:

System.out.println(1/0)
System.out.println("foo")
/exit
Run Code Online (Sandbox Code Playgroud)

我以为第二行无法访问.这就是我的预期.但在打印异常后,foo也会打印出来.

java java-9 jshell

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

jshell中C选项有什么用

我已经阅读了jshell 指南介绍,但在 jshell 中找不到关于 -C 选项的描述/示例。

$jshell --help
 -C<flag>              Pass <flag> to the compiler.
                        Use one -C for each compiler flag or flag argument
Run Code Online (Sandbox Code Playgroud)

java java-9 jshell

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

如何以编程方式将变量添加到从中调用某些代码的Shell?

使用jshell,有没有办法在解释器的范围内创建变量?我有类似的东西

Map<String,Object> vars = loadVarsFromSomething();
Run Code Online (Sandbox Code Playgroud)

我希望能够做类似的事情

for ( Map.Entry<String,Object> key : vars )
{
  scope.put( key.getKey(), key.getValue() );
}
Run Code Online (Sandbox Code Playgroud)

那可能吗?

请注意,我所指的"范围" 是jshell解释器正在使用的Shell对象的实际范围.我需要获取对shell调用的shell的引用,以便我可以创建变量看起来好像是由用户/来电者分配的..

java java-9 jshell

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

有没有办法删除 JShell 中的导入?

我正在发现 JShell,并且发现默认添加的导入:

jshell> /imports
|    import java.io.*
|    import java.math.*
|    import java.net.*
|    import java.nio.file.*
|    import java.util.*
|    import java.util.concurrent.*
|    import java.util.function.*
|    import java.util.prefs.*
|    import java.util.regex.*
|    import java.util.stream.*
Run Code Online (Sandbox Code Playgroud)

完成此操作后,我使用以下命令添加了自己的导入:

import java.lang.Math
Run Code Online (Sandbox Code Playgroud)

有没有办法在不终止活动会话/重新启动的情况下删除后者导入?

我尝试发出/edit命令,删除导入,单击接受并单击退出,但这并没有成功。

如评论中所述,/reset删除导入,但它也会删除先前在会话中输入的任何其他内容。有没有一种特定的方法可以仅删除导入语句?

java import java-9 jshell

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

在JShell上执行时同一语句的不同行为

我正在研究一个问题,以便在彼此之间存储两个类的引用

例如:

class A {
B b;
A(B b){
this.b = b;}
}

class B {
A a;
B(A a){
this.a = a;}
}

public static void main(String...s){
A a = new A(new B(null));
a.b.a = a;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用以下语句而不是上面的初始化:

A a = new A(new B(a));
Run Code Online (Sandbox Code Playgroud)

我得到了以下错误,这很明显:

Main.java:19: error: variable a might not have been initialised
        A a = new A(new B(a));
Run Code Online (Sandbox Code Playgroud)

但是如果我在JShell上尝试相同,它就可以正常工作(只是为了确保variable a从未初始化过,我variable a在执行语句之前检查过,确认它之前没有初始化:

在此输入图像描述

可能是我在这里遗漏了一些东西,但有些人可以帮助我理解为什么在JAVA中执行同一语句有两种不同的行为.

理解这个问题的一个简单方法是允许使用以下语句,Jshell但不允许在正常程序中:

var somevar = somevar;
Run Code Online (Sandbox Code Playgroud)

java java-9 java-10 jshell

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

标签 统计

jshell ×10

java ×9

java-9 ×8

import ×2

eclipse ×1

http2 ×1

java-10 ×1

java-http-client ×1

java-package ×1