我有一个自定义的log4j自定义appender,它在我的测试环境中工作,比如:
C: \Log4jTest>java-cp。Log4jTest
但在将其配置为Karaf时,在启动时总是会出现错误:org.apache.filex.configadmin-1.2.8|[org.osgi.service.log.LogService,org.knoplerfish.service.logLogService,.org.ops4j.pax.logging.PaxLoggingService,org.osgi-service.cm.ManagedService,id=8,bundle=4]:更新配置PID=org.os4j.pax.logging,factoryPID=null,bundleLocation=mvn:org.ops4j.pax.logging/pax logging service/1.6.9时出现意外问题java.lang.NoClassDefFoundError:javax/crypto/SecretKey网址:com.microsoft.azure.storage.Credentials。(Credentials.java:63)网址:com.microsoft.azure.storage.StorageCredentialsAccountAndKey。(StorageCredentialsAccountAndKey.java:42)……
我的MVP POM。XML非常简单:
[<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hcit.logger</groupId>
<artifactId>cloud-logger-service</artifactId>
<version>1.0.0</version>
<packaging>bundle</packaging>
<dependencies>
<dependency>
<groupId>org.ops4j.pax.logging</groupId>
<artifactId>pax-logging-service</artifactId>
<version>1.6.9</version>
</dependency>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-storage</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.7</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
<Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
<Export-Package>com.hcit.logger</Export-Package>
<Import-Package>!*</Import-Package>
<Embed-Dependency>*;scope=compile|runtime;inline=true</Embed-Dependency>
<_failok>true</_failok>
<Fragment-Host>org.ops4j.pax.logging.pax-logging-service</Fragment-Host>
<Implementation-Version>${project.version}</Implementation-Version>
<Bundle-Version>${project.version}</Bundle-Version>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>
]
以及我的org.ops4j.pax.logging.cfg的片段:
……
log4j.appender.hafauditCloudLoggerAppender=com.hcit.logger.CloudLoggerAppender
log4j.appender.hafauditCloudLoggerAppender.Threshold=DEBUG
log4j.appender.hafauditCloudLoggerAppender.TableName=记录器表
log4j.category.com.gehcit.haf.audit.sumer=调试,hafauditCloudLoggerAppender……
我检查了我的jre.properties是否有javax.crypto:
……
javax.crypto,\
javax.crypto.interfaces,\
javax.crypto.spec,\
……
我是卡拉夫的新手,想知道如何解决这个问题?我的JDK是jdk1.7.0_72,谢谢。
最后我发现了一些技巧,如果通过添加以下组件来更改config.properties:
org.osgi.framework.bootdelegation=org.apache.karaf.jaas.boot,sun.,com.sun.,javax.transaction,javax.transaction.<em],javax.sql.>,com.microsoft.sqlserver.TR
它有效。当然,在POM.xml中应该添加fasterxml:
的依赖项
[<dependency>
<groupId>de.matrixweb.smaller</groupId>
<artifactId>ant</artifactId>
<version>0.8.4</version>
</dependency>]