如何在intellij JShell控制台中导入自定义类

Ang*_*Koh 7 java intellij-idea jshell

我正在使用新的intellij Jshell控制台(在此处介绍https://blog.jetbrains.com/idea/2017/09/java-9-and-intellij-idea/)

我创建了一个简单的类文件Test2.java

public class Test2 {

    public static String test(){
        return "Hello";
    }
}
Run Code Online (Sandbox Code Playgroud)

JShell控制台能够在提示中找到该方法 在此输入图像描述

当我尝试在intellij jshell控制台上运行它时(工具> Jshell控制台)

Test2.test();
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

"C:\Program Files\Java\jdk-9.0.1\bin\java" --add-modules java.xml.bind -classpath "C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3.1\lib\jshell-frontend.jar;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3.1\lib\jshell-protocol.jar" com.intellij.execution.jshell.frontend.Main

ERROR: cannot find symbol
  symbol:   variable Test2
  location: class 
Rejected Test2.test()
Run Code Online (Sandbox Code Playgroud)

有什么东西我必须配置JShell来识别我的自定义类?
我已将其设置为使用项目的类路径.

代码.
在此输入图像描述

Jshell控制台和下面的错误. 在此输入图像描述

编辑:

我还尝试将代码移动到一个包中,并按照用户@NullPointer的建议在Jshell中导入它.

同样的错误仍然存​​在,它也给我"错误:包angelapps.java不存在"错误.

在此输入图像描述

Oo.*_*.oO 8

假设你有以下项目结构:

在此输入图像描述

以下代码:

在此输入图像描述

确保在项目设置中设置库: File -> Project Structure -> Libraries

确保在此处使用您的输出位置(生成类文件的位置)!它可能会有所不同,具体取决于构建系统(目标/类别或出/生产等)

在此输入图像描述

它应该给你正在寻找的结果:

在此输入图像描述

  • 即使这是有效的,它也有一些缺点。只要 JShell 控制台打开,就不会编译项目的 Java 源代码。要让 JShell 知道代码更改,您需要 1) 关闭 JShell 控制台,2) 强制编译更改的代码,仅编译单个文件或整个项目,3) 重新打开 JShell 控制台。似乎将输出目录作为库添加到项目中的解决方案,以获得 JShell 控制台中可用的类,有限制或什至不打算工作,请参阅 [IDEA-176579](https://youtrack.jetbrains.com /issue/IDEA-176579) (3认同)
  • 还有点[我的意思](/sf/ask/3370077231/?noredirect=1#comment83268600_48143960).:) (2认同)
  • .oOo.凉!.oOo. (2认同)
  • 哦,我将项目(本身,基本文件夹)添加为库,而不是项目输出文件夹,并且路径看起来非常相似.在您的答案中,当您说"确保在项目设置中设置库"时,您是否可以明确它是包含项目输出类基础的输出文件夹?很难看到图像中的确切路径,并弄清楚我的项目的相应路径是什么(我在gradle上,输出路径不同) (2认同)