java 程序运行问题请教
我在eclipse里面编写了程序,调用驱动从hana数据库读取数据并写出到excel里。
程序在eclipse里编译、执行都没有问题,我用 fat jar插件将project打成jar包(因为有外部依赖,所以用的fat jar插件),在命令行使用
java -jar xxxxx.jar执行时,程序报错:
java -jar hanatoexcel.jar
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.simontuffs.onejar.Boot.run(Boot.java:306)
at com.simontuffs.onejar.Boot.main(Boot.java:159)
Caused by: java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at hte.htoedetail.getConnection(htoedetail.java:43)
at hte.htoedetail.writetoexcel(htoedetail.java:61)
at hte.hanatoe.main(hanatoe.java:33)
... 6 more
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range:
-1
at java.lang.String.substring(String.java:1967)
at com.sap.db.util.DriverVersionInfo.<init>(DriverVersionInfo.java:78)
at com.sap.db.util.DriverVersionInfo.newInstance(DriverVersionInfo.java:
34)
at com.sap.db.jdbc.DriverSapDB.<clinit>(DriverSapDB.java:525)
... 11 more
我连接hana数据库的代码(使用的是ngdbc.jar驱动):
private static final String DRIVER = "com.sap.db.jdbc.Driver";
private static final String URL = "jdbc:sap://192.168.1.1:30015?reconnect=true";
private String user = "user";
private String pwd = "12345678";
public Connection getConnection(String userid, String pwd)
throws ClassNotFoundException, SQLException{
Class.forName(DRIVER);
return DriverManager.getConnection(URL, userid, pwd);
}
请高手指点为啥打成jar包运行就报错?
谢谢!