2017-10-06 10 views
0

私のプロジェクトではsapコンポーネントを使用しています。java.lang.ClassNotFoundExceptionを解決する方法:muleのcom.sap.conn.jco.JCoExceptionエラー?

下記見つけてください、私のSAPコンポーネントのサンプルコードです:

<sap:connector name="SAP_Configuration" jcoAsHost="${sapbw.host}" jcoUser="${sapbw.user}" jcoPasswd="${sapbw.password}" jcoSysnr="${sapbw.instance}" jcoClient="${sapbw.client}" jcoLang="${sapbw.language}" validateConnections="true" doc:name="SAP"/> 

私はビルド・パスに必要なsapidoc3とsapjco3 jarファイルを追加しました。私はウィンドウOSで動作しているので、まだ以下のエラーを賭けているsapjco3.dllファイルが含まれています。

ERROR 2017-10-06 16:32:32,849 [main] org.mule.module.launcher.DefaultArchiveDeployer: 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+ Failed to deploy artifact 'nol-integration-v1.1', see + 
+ below             + 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
org.mule.module.launcher.DeploymentException: Failed to deploy artifact [nol-integration-v1.1] 
    at org.mule.module.launcher.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:38) ~[mule-module-launcher-3.7.0.jar:3.7.0] 
    at org.mule.module.launcher.DefaultArchiveDeployer.guardedDeploy(DefaultArchiveDeployer.java:310) ~[mule-module-launcher-3.7.0.jar:3.7.0] 
    at org.mule.module.launcher.DefaultArchiveDeployer.deployArtifact(DefaultArchiveDeployer.java:330) ~[mule-module-launcher-3.7.0.jar:3.7.0] 
    at org.mule.module.launcher.DefaultArchiveDeployer.deployPackagedArtifact(DefaultArchiveDeployer.java:155) ~[mule-module-launcher-3.7.0.jar:3.7.0] 
    at org.mule.module.launcher.DefaultArchiveDeployer.deployPackagedArtifact(DefaultArchiveDeployer.java:256) ~[mule-module-launcher-3.7.0.jar:3.7.0] 
    at org.mule.module.launcher.DefaultArchiveDeployer.deployPackagedArtifact(DefaultArchiveDeployer.java:78) ~[mule-module-launcher-3.7.0.jar:3.7.0] 
    at org.mule.module.launcher.DeploymentDirectoryWatcher.deployPackedApps(DeploymentDirectoryWatcher.java:275) ~[mule-module-launcher-3.7.0.jar:3.7.0] 
    at org.mule.module.launcher.DeploymentDirectoryWatcher.start(DeploymentDirectoryWatcher.java:150) ~[mule-module-launcher-3.7.0.jar:3.7.0] 
    at org.mule.module.launcher.MuleDeploymentService.start(MuleDeploymentService.java:100) ~[mule-module-launcher-3.7.0.jar:3.7.0] 
    at org.mule.module.launcher.MuleContainer.start(MuleContainer.java:170) ~[mule-module-launcher-3.7.0.jar:3.7.0] 
    at org.mule.tooling.server.application.ApplicationDeployer.main(ApplicationDeployer.java:15) ~[tooling-support-3.7.0.jar:?] 
Caused by: java.lang.NoClassDefFoundError: com/sap/conn/jco/JCoException 
    at java.lang.Class.getDeclaredMethods0(Native Method) ~[?:1.8.0_121] 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[?:1.8.0_121] 
    at java.lang.Class.getDeclaredMethods(Class.java:1975) ~[?:1.8.0_121] 
    at org.springframework.core.type.StandardAnnotationMetadata.hasAnnotatedMethods(StandardAnnotationMetadata.java:129) ~[spring-core-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
    at org.springframework.context.annotation.ConfigurationClassUtils.isLiteConfigurationCandidate(ConfigurationClassUtils.java:157) ~[spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
    at org.springframework.context.annotation.ConfigurationClassUtils.checkConfigurationClassCandidate(ConfigurationClassUtils.java:108) ~[spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:278) ~[spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:239) ~[spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:254) ~[spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:94) ~[spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:606) ~[spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:462) ~[spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
    at org.mule.config.spring.SpringRegistry.doInitialise(SpringRegistry.java:108) ~[mule-module-spring-config-3.7.0.jar:3.7.0] 
    at org.mule.registry.AbstractRegistry.initialise(AbstractRegistry.java:104) ~[mule-core-3.7.0.jar:3.7.0] 
    at org.mule.config.spring.SpringXmlConfigurationBuilder.createSpringRegistry(SpringXmlConfigurationBuilder.java:172) ~[mule-module-spring-config-3.7.0.jar:3.7.0] 
    at org.mule.config.spring.SpringXmlConfigurationBuilder.doConfigure(SpringXmlConfigurationBuilder.java:95) ~[mule-module-spring-config-3.7.0.jar:3.7.0] 
    at org.mule.config.builders.AbstractConfigurationBuilder.configure(AbstractConfigurationBuilder.java:43) ~[mule-core-3.7.0.jar:3.7.0] 
    at org.mule.config.builders.AbstractResourceConfigurationBuilder.configure(AbstractResourceConfigurationBuilder.java:69) ~[mule-core-3.7.0.jar:3.7.0] 
    at org.mule.config.builders.AutoConfigurationBuilder.autoConfigure(AutoConfigurationBuilder.java:101) ~[mule-core-3.7.0.jar:3.7.0] 
    at org.mule.config.builders.AutoConfigurationBuilder.doConfigure(AutoConfigurationBuilder.java:52) ~[mule-core-3.7.0.jar:3.7.0] 
    at org.mule.config.builders.AbstractConfigurationBuilder.configure(AbstractConfigurationBuilder.java:43) ~[mule-core-3.7.0.jar:3.7.0] 
    at org.mule.config.builders.AbstractResourceConfigurationBuilder.configure(AbstractResourceConfigurationBuilder.java:69) ~[mule-core-3.7.0.jar:3.7.0] 
    at org.mule.context.DefaultMuleContextFactory$1.configure(DefaultMuleContextFactory.java:89) ~[mule-core-3.7.0.jar:3.7.0] 
    at org.mule.context.DefaultMuleContextFactory.doCreateMuleContext(DefaultMuleContextFactory.java:222) ~[mule-core-3.7.0.jar:3.7.0] 
    at org.mule.context.DefaultMuleContextFactory.createMuleContext(DefaultMuleContextFactory.java:81) ~[mule-core-3.7.0.jar:3.7.0] 
    at org.mule.module.launcher.application.DefaultMuleApplication.init(DefaultMuleApplication.java:188) ~[mule-module-launcher-3.7.0.jar:3.7.0] 
    at org.mule.module.launcher.artifact.ArtifactWrapper$2.execute(ArtifactWrapper.java:62) ~[mule-module-launcher-3.7.0.jar:3.7.0] 
    at org.mule.module.launcher.artifact.ArtifactWrapper.executeWithinArtifactClassLoader(ArtifactWrapper.java:129) ~[mule-module-launcher-3.7.0.jar:3.7.0] 
    at org.mule.module.launcher.artifact.ArtifactWrapper.init(ArtifactWrapper.java:57) ~[mule-module-launcher-3.7.0.jar:3.7.0] 
    at org.mule.module.launcher.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:25) ~[mule-module-launcher-3.7.0.jar:3.7.0] 
    ... 10 more 
Caused by: java.lang.ClassNotFoundException: com.sap.conn.jco.JCoException 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[?:1.8.0_121] 
    at org.mule.module.launcher.FineGrainedControlClassLoader.findClass(FineGrainedControlClassLoader.java:175) ~[mule-module-launcher-3.7.0.jar:3.7.0] 
    at org.mule.module.launcher.MuleApplicationClassLoader.findClass(MuleApplicationClassLoader.java:134) ~[mule-module-launcher-3.7.0.jar:3.7.0] 
    at org.mule.module.launcher.FineGrainedControlClassLoader.loadClass(FineGrainedControlClassLoader.java:119) ~[mule-module-launcher-3.7.0.jar:3.7.0] 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_121] 
    at java.lang.Class.getDeclaredMethods0(Native Method) ~[?:1.8.0_121] 
+0

あなたがビルド・パスにそのJARを追加したと思うかもしれません。おそらくそうではない。これは*ランタイム*エラーです。 com.sap.conn.jco.JCoExceptionを含むJARがランタイムパッケージにないか、間違った場所にあるようです。あなたのパッケージをチェックしてください。ネイティブコード? java.library.path JVM引数が正しく設定されていない限り、それも問題になります。 – duffymo

+0

ビルドパスでjarファイルを見ることができましたが、エラーの正確な理由は不明です。 – Thiru

+0

パスを作成しますか?それらはJARに配備されていますか?もしそうでなければ、Spring Bootはそれらを見つけられません。 – duffymo

答えて

0

JCoのクラスはsapjco3.jarのは、クラスパスには本当にないか、またはJCoの初期化は、そのネイティブライブラリをロードする時に、たとえば、失敗したので、それはどちらかで見つからない場合。

JVMに適合する正しいJCoネイティブライブラリ(32ビットvs. 64ビット)を選択しましたか? 64ビットオペレーティングシステムで実行している場合でも32ビットJVMを使用している場合は、32ビットバージョンのJCoをインストールする必要があります。

Muleについてはわかりませんが、SAPアプリケーションと一緒にsapjco3.jarをアプリケーションサーバーのランタイム環境にデプロイしないことをお勧めします。 JCoのネイティブライブラリは一度だけ読み込むことができるので、システムライブラリとして扱うほうがよい、つまり、Muleスタートアップクラスパス自体に入れるのが良いでしょう。それ以外の場合は、sapjco3.jarも含む2番目のアプリケーションの起動に失敗する可能性があります。

0

プロジェクトがmavenizedされている場合は、POMにこの依存関係を追加しますが:

<dependency> 
<groupId>org.hibersap</groupId> 
<artifactId>sapjco3</artifactId> 
<version>3.0-RC02</version> 
</dependency> 
関連する問題