有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

jdbc NetSuite java。lang.NoClassDefFoundError:getConnection上的sun/io/MalformedInputException

当我尝试使用DriverManager在java中连接时,出现以下错误。我在网上到处搜索,没有找到解决办法。有人能告诉我以下错误的原因或解释如何解决它吗

conn = DriverManager.getConnection(connectionString, login, password);

"C:\Program Files\Java\jdk1.8.0_20\bin\java" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:54111,suspend=y,server=n -Dfile.encoding=UTF-8 -classpath "Z:\scripts\Local\NetSuite\bin;Z:\scripts\Local\NetSuite\lib\c3p0-0.9.5-pre8.jar;Z:\scripts\Local\NetSuite\lib\mchange-commons-java-0.2.7.jar;Z:\scripts\Local\NetSuite\lib\mysql-connector-java-5.1.23-bin.jar;Z:\scripts\Local\NetSuite\lib\NQjc.jar;Z:\scripts\Local\NetSuite\netsuite.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\ext\zipfs.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA 13.1.5\lib\idea_rt.jar" connection.Main
Connected to the target VM, address: '127.0.0.1:54111', transport: 'socket'
Using connection string: jdbc:ns://odbcserver.na1.netsuite.com:1708;ServerDataSource=NetSuite.com;encrypted=1;CustomProperties=(AccountID=3650326;RoleID=3)
Exception in thread "main" java.lang.NoClassDefFoundError: sun/io/MalformedInputException
    at com.netsuite.oautil.UtilTransliterator.OptimizeNewTransliteratorUsingSunIO(Unknown Source)
    at com.netsuite.oautil.UtilTransliterator.OptimizeNewTransliteratorUsingVM(Unknown Source)
    at com.netsuite.oautil.UtilTransliterator.GetNewTransliterator(Unknown Source)
    at com.netsuite.oautil.UtilTransliterator.GetNewTransliterator(Unknown Source)
    at com.netsuite.openaccess.ssp.Ssp7.<init>(Unknown Source)
    at com.netsuite.openaccess.ssp.Ssp8.<init>(Unknown Source)
    at com.netsuite.openaccess.ssp.Ssp9.<init>(Unknown Source)
    at com.netsuite.openaccess.ssp.SspFactory.ProcessReply(Unknown Source)
    at com.netsuite.openaccess.ssp.SspFactory.GetSsp(Unknown Source)
    at com.netsuite.openaccess.ctxt.conn.ConnectionContext.doConnect(Unknown Source)
    at com.netsuite.openaccess.ctxt.conn.ConnectionContext.connect(Unknown Source)
    at com.netsuite.jdbc.openaccess.OpenAccessImplConnection.open(Unknown Source)
    at com.netsuite.jdbc.oabase.BaseConnection.connect(Unknown Source)
    at com.netsuite.jdbc.oabase.BaseConnection.setupImplConnection(Unknown Source)
    at com.netsuite.jdbc.oabase.BaseConnection.open(Unknown Source)
    at com.netsuite.jdbc.oabase.BaseDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at connection.DBNetSuite.<init>(DBNetSuite.java:59)
    at connection.DBNetSuite.getInstance(DBNetSuite.java:85)
    at connection.DBNetSuite.getTableName(DBNetSuite.java:110)
    at connection.Main.main(Main.java:12)
Caused by: java.lang.ClassNotFoundException: sun.io.MalformedInputException
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 22 more
Disconnected from the target VM, address: '127.0.0.1:54111', transport: 'socket'

Process finished with exit code 1

共 (1) 个答案

  1. # 1 楼答案

    NetSuite库使用的异常不是Java API的一部分,而是Sun/Oracle Java实现内部类的一部分。由于该类不是API的一部分,Oracle(以及在此之前的Sun)可以自由删除它;他们做到了。它不包含在Java8更新25中;我不知道它是什么时候被移除的

    这就是为什么不应该在应用程序中使用Java附带的包sun.*com.sun.*com.oracle.*中的类的原因之一,因为它们可能会发生更改,并且随时都可能被删除

    您应该询问NetSuite是否有不使用此类的较新驱动程序