愿有一把钥匙 2022-01-01 22:00 采纳率: 0%
浏览 50

jar包导出链接gp报错越界

java项目,在eclipse运行正常,但是导出jar包,单独运行时,gp数据库连接失败,报错是字符串下标越界
开始以为哪里写的有问题,重新创建了一个测试工程,还是报错


```java

//如下是连接GP的类和方法
public class GPCON {
    public static String connectionString = "jdbc:pivotal:greenplum://172.26.32.25:5432;DatabaseName=mtp";
    public static String user = "admin";
    public static String password = "admin*";
    Connection connection = null;
    
    /**连接数据库*/
    public void con(){
        try {
        Class.forName("com.pivotal.jdbc.GreenplumDriver");
        connection = DriverManager.getConnection(connectionString,user,password);
        System.out.println("GP数据库连接成功!!!");
        } catch (Exception e) {
        System.err.println("数据库连接出现异常 " + e.getMessage());
        e.printStackTrace();
        return;
        }
    }    
    
}



//如下是调用的类和方法
public class T {
public static void main(String[] args) {
    GPCON gpcon =new GPCON();
    gpcon.con();
}
}








打包jar运行报错如下
数据库连接出现异常 String index out of range: -6
java.lang.StringIndexOutOfBoundsException: String index out of range: -6
        at java.lang.String.substring(Unknown Source)
        at com.pivotal.jdbc.greenplumbase.ddda.<init>(Unknown Source)
        at com.pivotal.jdbc.greenplumbase.BaseConnection.a(Unknown Source)
        at com.pivotal.jdbc.greenplumbase.BaseDriver.connect(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at GPCON.con(GPCON.java:18)
        at T.main(T.java:5)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)

```

  • 写回答

2条回答 默认 最新

  • 大鹏cool Java领域优质创作者 2022-01-01 22:04
    关注

    下标越界与在 eclipse 中运行还是打包成 jar 包运行无关,而是访问了超出字符串最大下标的字符,建议在程序中加一个判断,如果下标位置超过字符串的最大下标位置,就不要取字符串中的字符了。

    评论

报告相同问题?

问题事件

  • 修改了问题 1月2日
  • 修改了问题 1月2日
  • 修改了问题 1月2日
  • 修改了问题 1月2日
  • 展开全部

悬赏问题

  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100