小编Dyl*_*son的帖子

有没有办法修改模块路径并添加程序化JShell实例的模块?

我试图通过我使用JShell API创建的JShell实例在运行时运行一些Java代码.为了演示我的问题,我将分享我的简单代码.

在我目前的设置中,我有一个名为lib的目录,它有MySQL Java驱动程序:mysql-connector-java-5.1.35.jar.

通过命令工具启动JShell并添加所需的模块:

jshell --module-path lib --add-modules mysql.connector.java
Run Code Online (Sandbox Code Playgroud)

然后加载mysql驱动程序适合我:

jshell> Class.forName("com.mysql.jdbc.Driver").newInstance();
$1 ==> com.mysql.jdbc.Driver@42f93a98
Run Code Online (Sandbox Code Playgroud)

我用module-info.javaas 创建了一个类似的Java 9模块:

module example.loadmysql {
    requires java.sql;
    requires mysql.connector.java;
    requires jdk.jshell;
}
Run Code Online (Sandbox Code Playgroud)

src/example/loadmysql/Runner.java:

package example.loadmysql;

import jdk.jshell.*;
import java.sql.*;

public class Runner {
    public static void main(String[] args) throws Exception {
        // this works because this module requires mysql.connector.java
        System.out.println(Class.forName("com.mysql.jdbc.Driver").newInstance());

        JShell js = JShell.create();
        String code = ""
            + "try {"
            + "    Class.forName(\"com.mysql.jdbc.Driver\").newInstance();" …
Run Code Online (Sandbox Code Playgroud)

java java-9 jshell module-path

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

标签 统计

java ×1

java-9 ×1

jshell ×1

module-path ×1