如何在 jshell 中为 spring 项目设置类路径
how to set classpath for spring project in jshell
我正在学习使用 spring 框架,我似乎找不到类似于 Django shell_plus 的工具。我想进入一个 java repl,我可以在其中访问我所有的 类、依赖项等。我用谷歌搜索并找到了 j-shell 和 spring-shell 但是 spring-shell 似乎不能满足我的需求,因为我需要能够实例化和玩我的 类,所以我去了j-shell。我唯一的问题是我不知道如何让 j-shell 知道我的 类 在哪里。我试过了
$ jshell --classpath "~/Desktop/path/to/project/"
我的项目目录是:
Project
|
+-- build.gradle
|
+-- build
| |
| +-- libs and etc...
+-- src
| |
| +-- main
| |
| +-- java
| |
| com
| |
| +-- MyClass.java
| |
| +-- MyOtherClass.java
|
+-- settings.gradle
+-- gradlew
+-- default.nix
但是在 j-shell 中时,我无法访问 spring 框架或我的 类。如果这很重要,我在 nixos 上使用 emacs,而 nix 用于开发环境依赖性。感谢任何形式的帮助,谢谢。
我还尝试将类路径设置为位于 ~/home/.gradle/
中的罐子
我希望在 jshell repl 中访问 spring 框架 类 和我自己编写的框架。
有几种方法可以设置 jshell 会话的 class 路径。
启动时,输入 REPL 之前:
$jshell --class-path <your_classpath>
在您已经进入 运行 REPL 会话之后:
jshell>/env -class-path <your_classpath>
注意到 --class-path
和 -class-path
之间的区别了吗?这不是错字。
old-fashioned方式。在启动 jshell 之前设置一个 $CLASSPATH 环境变量:
$export CLASSPATH=<your_classpath>
$jshell
实际上还有第四种方法可以使 class 路径在 jshell 会话之间保持不变,因此您不必每次都设置它。它涉及创建一个 .jsh
启动文件,并设置和保存它。在 jshell 会话中,请参阅 /help
以了解更多信息。
我制作了一个 Gradle 插件到 运行 一个 jshell
控制台,在类路径中包含你项目的所有库: jshell-plugin ,一旦在你的构建设置中配置, 你只需要 运行:
$ gradle --console plain jshell
README 说明还有一个特殊的部分,用于在 Spring 引导项目中设置它并能够访问业务对象(Spring 上下文中的 bean:#spring-boot-applications:
jshell> var myUserService = ctx.App.getBean(MyUserService.class)
jshell> ctx.App.ppjson(myUserService.getByUsername("admin"))
{
"name" : "Jhon",
"lastName" : "Due",
"username" : "admin",
"age" : null
}
如果你没有使用 Gradle 并且你有一个旧的 Spring Boot 1.x 项目,你可以使用我制作的另一个项目,它不适用于现代 Spring 启动应用程序,但至少你不需要 Gradle 或来自 JDK9+ 发行版的 jshell
来使用你的代码和 spring 的 bean:spring-ctx-groovy
我正在学习使用 spring 框架,我似乎找不到类似于 Django shell_plus 的工具。我想进入一个 java repl,我可以在其中访问我所有的 类、依赖项等。我用谷歌搜索并找到了 j-shell 和 spring-shell 但是 spring-shell 似乎不能满足我的需求,因为我需要能够实例化和玩我的 类,所以我去了j-shell。我唯一的问题是我不知道如何让 j-shell 知道我的 类 在哪里。我试过了
$ jshell --classpath "~/Desktop/path/to/project/"
我的项目目录是:
Project
|
+-- build.gradle
|
+-- build
| |
| +-- libs and etc...
+-- src
| |
| +-- main
| |
| +-- java
| |
| com
| |
| +-- MyClass.java
| |
| +-- MyOtherClass.java
|
+-- settings.gradle
+-- gradlew
+-- default.nix
但是在 j-shell 中时,我无法访问 spring 框架或我的 类。如果这很重要,我在 nixos 上使用 emacs,而 nix 用于开发环境依赖性。感谢任何形式的帮助,谢谢。
我还尝试将类路径设置为位于 ~/home/.gradle/
我希望在 jshell repl 中访问 spring 框架 类 和我自己编写的框架。
有几种方法可以设置 jshell 会话的 class 路径。
启动时,输入 REPL 之前:
$jshell --class-path <your_classpath>
在您已经进入 运行 REPL 会话之后:
jshell>/env -class-path <your_classpath>
注意到 --class-path
和 -class-path
之间的区别了吗?这不是错字。
old-fashioned方式。在启动 jshell 之前设置一个 $CLASSPATH 环境变量:
$export CLASSPATH=<your_classpath> $jshell
实际上还有第四种方法可以使 class 路径在 jshell 会话之间保持不变,因此您不必每次都设置它。它涉及创建一个 .jsh
启动文件,并设置和保存它。在 jshell 会话中,请参阅 /help
以了解更多信息。
我制作了一个 Gradle 插件到 运行 一个 jshell
控制台,在类路径中包含你项目的所有库: jshell-plugin ,一旦在你的构建设置中配置, 你只需要 运行:
$ gradle --console plain jshell
README 说明还有一个特殊的部分,用于在 Spring 引导项目中设置它并能够访问业务对象(Spring 上下文中的 bean:#spring-boot-applications:
jshell> var myUserService = ctx.App.getBean(MyUserService.class)
jshell> ctx.App.ppjson(myUserService.getByUsername("admin"))
{
"name" : "Jhon",
"lastName" : "Due",
"username" : "admin",
"age" : null
}
如果你没有使用 Gradle 并且你有一个旧的 Spring Boot 1.x 项目,你可以使用我制作的另一个项目,它不适用于现代 Spring 启动应用程序,但至少你不需要 Gradle 或来自 JDK9+ 发行版的 jshell
来使用你的代码和 spring 的 bean:spring-ctx-groovy