java - 如何在jshell中为spring项目设置类路径
问题描述
我正在学习使用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 中可以访问 springframework 类和我自己编写的类。
解决方案
我制作了一个 Gradle 插件来运行jshell
控制台,其中包含类路径中项目的所有库:jshell-plugin,一旦在构建设置中配置,您只需要运行:
$ gradle --console plain jshell
此外,README 说明有一个特殊部分用于在 Spring Boot 项目中设置它并能够访问业务对象(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 Boot 应用程序,但至少你不需要 Gradle 或jshell
来自 JDK9+ 的分发使用您的代码和 spring 的 bean:s pring-ctx-groovy
推荐阅读
- java - 路径参数中的 URL
- c# - 我如何编译(运行)只是 C# 中的一部分代码?
- mysql - 估计列大小
- python - BeautifulSoup 无法解析网站
- powershell - 如何在 SharePoint Online 中更新托管元数据文件属性
- excel - 使用 Power Query 导入格式奇特的 CSV
- angular - 从 Angular 5 升级到 Angular 6 后:当前文档没有文档类型
- powershell - PowerShell脚本使用扩展名查找文件并排除文件夹
- php - phpredis zRange 返回
- c# - 使用 ASP.Net Core 2.0 C# 在 MongoDB 中插入实时数据