我试图通过我使用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)