小编Job*_*oba的帖子

使用JShell实例共享动态加载的类

请查看以下编辑内容

我正在尝试创建一个JShell实例,它允许我访问,并允许我与它创建的JVM中的对象进行交互.这适用于在编译时可用的类但对于动态加载的类失败.

public class Main {

    public static final int A = 1;
    public static Main M;

    public static void main(String[] args) throws Exception {
        M = new Main();
        ClassLoader cl = new URLClassLoader(new URL[]{new File("Example.jar").toURL()}, Main.class.getClassLoader());
        Class<?> bc = cl.loadClass("com.example.test.Dynamic");//Works
        JShell shell = JShell.builder()
                .executionEngine(new ExecutionControlProvider() {
                    @Override
                    public String name() {
                        return "direct";
                    }

                    @Override
                    public ExecutionControl generate(ExecutionEnv ee, Map<String, String> map) throws Throwable {
                        return new DirectExecutionControl();
                    }
                }, null)
                .build(); …
Run Code Online (Sandbox Code Playgroud)

java dynamic-class-loaders java-9 jshell

24
推荐指数
1
解决办法
620
查看次数

在 Spring 中使用 HikariCP 连接到 Oracle DB 时发送应用程序名称

我有一个 Spring Boot 1.4.7 应用程序,目前正在更新到 2.0.5 版。该应用程序使用 JDBC 使用以下配置连接到 Oracle DB:

spring:
  jpa:
    database-platform: org.hibernate.dialect.Oracle12cDialect
  datasource:
    url: jdbc:oracle:thin:@<db_server>
    username: ${credentials.database.username}
    password: ${credentials.database.password}
    driver-class: oracle.jdbc.OracleDriver.class
    platform: oracle
    tomcat:
      connection-properties: v$session.program=${spring.application.name}
Run Code Online (Sandbox Code Playgroud)

将应用程序更新到 Spring Boot 2.0.5 后,发送到服务器的应用程序名称JDBC Thin Client不是${spring.application.name}. 这样做的原因似乎是在 Spring 2.x 中切换到 HikariCP 作为默认连接池。我将如何以允许我将自定义属性发送v$session.program到数据库的方式将此配置迁移到 Hikari ?

我尝试过的:

  • 附加?ApplicationName=<name>到 JDBC url。
  • 此Stackoverflow 问题中提到的解决方案
  • 环境 System.setProperty("oracle.jdbc.v$session.program", <name>)
  • spring.datasource.hikari.data-source-properties.v$session.program: <name>在 application.yml 中设置

java oracle jdbc spring-boot hikaricp

5
推荐指数
2
解决办法
2766
查看次数

Rail6 db:migrate 失败 - 参数数量错误(给定 1,预期 0)

我无法在 Windows 7 上的 Rail 6 中创建表(即成功运行 db:migrate)。

以防万一我通过安装 Ruby 2.6 开发包并执行“gem install Rails”完全重新安装了 Rails,这对我来说安装了 Rails 6.0.3.1

我创建了一个新项目,所做的第一件事是生成一个“客户”模型,之后我在失败并提示“给出了错误数量的参数”后立即运行 db:migrate 命令。见下文。

C:\Apps\rails>cd cmdb

C:\Apps\rails\cmdb>rails generate model Customer string:name

      invoke  active_record
      create    db/migrate/20200525080817_create_customers.rb
      create    app/models/customer.rb
      invoke    test_unit
      create      test/models/customer_test.rb
      create      test/fixtures/customers.yml

C:\Apps\rails\cmdb>rails db:migrate

== 20200525080817 CreateCustomers: migrating ==================================
-- create_table(:customers)
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:

wrong number of arguments (given 1, expected 0)
C:/Apps/rails/cmdb/db/migrate/20200525080817_create_customers.rb:4:in `block in change'
C:/Apps/rails/cmdb/db/migrate/20200525080817_create_customers.rb:3:in `change'
bin/rails:4:in `require'
bin/rails:4:in `<main>'

Caused …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails dbmigrate ruby-on-rails-6

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