在构建路径中添加 jconn4.jar 时,Spring 引导应用程序抛出 NullPointerException

NullPointerException thrown with Spring boot application when jconn4.jar is added in the build path

我是 Spring 引导的新手,我正在尝试使用它来开发 Web application.As 我需要在我的应用程序中连接到 Sybase 数据库,我必须包括 jconn4.jar 在我的构建路径中。但是,在我将 jconn4.jar 添加到我的构建路径后,我一直低于 NullPointerException。

2016-09-30 14:15:48.116  INFO 74768 --- [           main] m.j.a.SpringBootPractice          : No active profile set, falling back to default profiles: default
2016-09-30 14:15:48.116 DEBUG 74768 --- [           main] o.s.boot.SpringApplication               : Loading source class main.java.appstarter.SpringBootPractice
2016-09-30 14:15:48.160  INFO 74768 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@1a1e9a9: startup date [Fri Sep 30 14:15:48 EDT 2016]; root of context hierarchy
2016-09-30 14:15:48.162 DEBUG 74768 --- [           main] ationConfigEmbeddedWebApplicationContext : Bean factory for org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@1a1e9a9: org.springframework.beans.factory.support.DefaultListableBeanFactory@10ee7e5: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,org.springframework.context.event.internalEventListenerProcessor,org.springframework.context.event.internalEventListenerFactory,SpringBootPractice]; root of factory hierarchy
2016-09-30 14:15:48.975 DEBUG 74768 --- [           main] o.s.b.a.AutoConfigurationPackages        : @EnableAutoConfiguration was declared on a class in the package 'main.java.appstarter'. Automatic @Repository and @Entity scanning is enabled.
2016-09-30 14:15:49.252  INFO 74768 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [class org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$d55d155b] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2016-09-30 14:15:49.291 DEBUG 74768 --- [           main] ationConfigEmbeddedWebApplicationContext : Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@8bdbd8]
2016-09-30 14:15:49.291 DEBUG 74768 --- [           main] ationConfigEmbeddedWebApplicationContext : Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [org.springframework.context.event.SimpleApplicationEventMulticaster@145e7b9]
2016-09-30 14:15:49.622 DEBUG 74768 --- [           main] .t.TomcatEmbeddedServletContainerFactory : Code archive: C:\Users\.m2\repository\org\springframework\boot\spring-boot.4.1.RELEASE\spring-boot-1.4.1.RELEASE.jar
2016-09-30 14:15:49.622 DEBUG 74768 --- [           main] .t.TomcatEmbeddedServletContainerFactory : Code archive: C:\Users\.m2\repository\org\springframework\boot\spring-boot.4.1.RELEASE\spring-boot-1.4.1.RELEASE.jar
2016-09-30 14:15:49.623 DEBUG 74768 --- [           main] .t.TomcatEmbeddedServletContainerFactory : None of the document roots [src/main/webapp, public, static] point to a directory and will be ignored.
2016-09-30 14:15:49.656  WARN 74768 --- [           main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is java.lang.ExceptionInInitializerError
2016-09-30 14:15:49.664 ERROR 74768 --- [           main] o.s.boot.SpringApplication               : Application startup failed

org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is java.lang.ExceptionInInitializerError
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:137) ~[spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:535) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at main.java.appstarter.SpringBootPractice.main(SpringBootPractice.java:19) [bin/:na]
Caused by: java.lang.ExceptionInInitializerError: null
at org.apache.tomcat.util.buf.UDecoder.URLDecode(UDecoder.java:352) ~[tomcat-embed-core-8.5.5.jar:8.5.5]
at org.apache.tomcat.util.buf.UDecoder.URLDecode(UDecoder.java:324) ~[tomcat-embed-core-8.5.5.jar:8.5.5]
at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:3113) ~[tomcat-embed-core-8.5.5.jar:8.5.5]
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.addServletMapping(TomcatEmbeddedServletContainerFactory.java:277) ~[spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.addDefaultServlet(TomcatEmbeddedServletContainerFactory.java:257) ~[spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.prepareContext(TomcatEmbeddedServletContainerFactory.java:213) ~[spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:176) ~[spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:164) ~[spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:134) ~[spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
... 8 common frames omitted
Caused by: java.lang.NullPointerException: null
at java.nio.charset.Charset.put(Charset.java:538) ~[na:1.8.0_51]
at java.nio.charset.Charset.access0(Charset.java:271) ~[na:1.8.0_51]
at java.nio.charset.Charset.run(Charset.java:584) ~[na:1.8.0_51]
at java.nio.charset.Charset.run(Charset.java:573) ~[na:1.8.0_51]
at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_51]
at java.nio.charset.Charset.availableCharsets(Charset.java:572) ~[na:1.8.0_51]
at org.apache.tomcat.util.buf.B2CConverter.<clinit>(B2CConverter.java:49) ~[tomcat-embed-core-8.5.5.jar:8.5.5]
... 17 common frames omitted

我搜索了所有相关的 q/a 并在下面找到了一个可能的原因 link:NullPointerException thrown by Charset.availableCharsets due to our Sybase JDBC driver

但我没有看到任何人为此提出任何解决方案。

我已经尝试了很多可能性,但只要将其添加到构建路径中,仍然会出现此异常。这让我无法再进步了。

下面是我的pox.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.1.RELEASE</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>com.jayway.jsonpath</groupId>
        <artifactId>json-path</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<properties>
    <java.version>1.8</java.version>
</properties>

数据库配置

spring.datasource.driver-class-name=com.sybase.jdbc4.jdbc.SybDriver

任何人都可以帮助我解决这个问题或对我如何进行提出任何建议吗?

我们将不胜感激。

好像没有人回答我的问题。我刚刚从这个 linkNullPointerException thrown by... 得到了答案。原来我使用的是 2012 年的 jconn4.jar。我已将其替换为 2013 年的新版本,异常消失了。