Repository: netty/netty
Issue: OSGi manifests in javadocs/sources jars
Labels: defect

This problem affected many people more than year ago, but it's still here: https://stackoverflow.com/questions/23149966/classnotfoundexception-for-a-type-that-is-available-to-the-osgi-runtime-io-net

You are including OSGi manifests in sources/javadocs jars, so osgi container treats them as correct dependencies when resolving from OBR repository. So runtime fails with non-descriptive ClassNotFoundException.

Fix it ASAP please.


Issue comments:
Problematic jar example: https://search.maven.org/remotecontent?filepath=io/netty/netty-transport/5.0.0.Alpha2/netty-transport-5.0.0.Alpha2-sources.jar

@FeiWongReed We love contributions. Maybe submit a PR ?

Ok, will try.

It's easy to fix this, but it was not accidentally mistake. Look at #2058. So I don't know what to do.

Anybody? 

@FeiWongReed unfortunaly I'm not really an OSGI user and so have no idea what the right behaviour is. @trustin @Scottmitch  maybe you ?

So, which is the right thing? @ChristianSchwarz and @FeiWongReed ?

Which = OSGi manifest in the source/javadoc JAR or not

I'm sure that OSGi manifests must not be in javadocs/jars. Such approach breaks OSGi container from correct dependency resolution and leads to undescriptive NoClassDefFound exceptions. So, I think you should turn off such manifests (or, maybe, move them into maven profile for some strange freaks).

Right, the manifest must not be in the javadoc.jar but in the source bundle
to be able to compile it in your own.
Am 19.06.2015 10:33 nachm. schrieb "Fei Wong Reed" <notifications@github.com

> :
> 
> I'm sure that OSGi manifests must not be in javadocs/jars. Such approach
> breaks OSGi container from correct dependency resolution and leads to
> undescriptive NoClassDefFound exceptions. So, I think you should turn off
> such manifests (or, maybe, move them into maven profile for some strange
> freaks).
> 
> —
> Reply to this email directly or view it on GitHub
> https://github.com/netty/netty/issues/3886#issuecomment-113633268.

Thanks ... Will see if I can fix it or if someone else will beat me

> Am 20.06.2015 um 12:15 schrieb Christian Schwarz notifications@github.com:
> 
> Right, the manifest must not be in the javadoc.jar but in the source bundle
> to be able to compile it in your own.
> Am 19.06.2015 10:33 nachm. schrieb "Fei Wong Reed" <notifications@github.com
> 
> > :
> > 
> > I'm sure that OSGi manifests must not be in javadocs/jars. Such approach
> > breaks OSGi container from correct dependency resolution and leads to
> > undescriptive NoClassDefFound exceptions. So, I think you should turn off
> > such manifests (or, maybe, move them into maven profile for some strange
> > freaks).
> > 
> > —
> > Reply to this email directly or view it on GitHub
> > https://github.com/netty/netty/issues/3886#issuecomment-113633268.
> > 
> > —
> > Reply to this email directly or view it on GitHub.

So, does that mean, it's fine to have OSGi manifest in the source JARs?

> So, does that mean, it's fine to have OSGi manifest in the source JARs?
> I'm sure that NO. Christian, could you show me any artifact in Central, having manifest in source bundle?

Christian, are you understand that manifests in source bundles ruins dependency resolution when we are using OBR repositories?

Trustin, I think you should not add manifests into any jars, which are not containing classes, this is incorrect- you say, that your jar "provides" some package, but there is no any class related to that package. If somebody has such specific needs, he should build Netty manually. I think you should leave special profile (like mvn -Pwith-osgi-manifests-in-source-jars), but do not publish broken jars to central

Also, please read this again: https://stackoverflow.com/questions/23149966/classnotfoundexception-for-a-type-that-is-available-to-the-osgi-runtime-io-net

All OSGi Bundes at eclipse orbit with source jars contain a manifest, see
http://download.eclipse.org/tools/orbit/downloads/drops/R20150519210750/.
It is also valid to have jars without classes, eclipse does this eg for
native libs and images. Can you link a OSGi spec that define that this is
illegal? I guess you face a special problem with your build enviroment.
Am 21.06.2015 2:41 nachm. schrieb "Fei Wong Reed" <notifications@github.com

> :
> 
> Also, please read this again:
> https://stackoverflow.com/questions/23149966/classnotfoundexception-for-a-type-that-is-available-to-the-osgi-runtime-io-net
> 
> —
> Reply to this email directly or view it on GitHub
> https://github.com/netty/netty/issues/3886#issuecomment-113894729.

Eclipse != OSGi. In case of OBR repository and OBR dependency resolving such manifests will break it.

Ok, I've followed your link. I've downloaded sources jar: http://download.eclipse.org/tools/orbit/downloads/drops/R20150519210750/repository/plugins/ch.qos.logback.core.source_1.0.7.v20121108-1250.jar

Here is manifest.mf from it:

```
Manifest-Version: 1.0
Eclipse-SourceBundle: ch.qos.logback.core;version="1.0.7.v20121108-125
 0"
Bundle-Vendor: %Bundle-Vendor.0
Bundle-Localization: plugin
Bundle-Name: %Bundle-Name.0
Bundle-SymbolicName: ch.qos.logback.core.source
Eclipse-SourceReferences: scm:cvs:pserver:dev.eclipse.org:/cvsroot/too
 ls:org.eclipse.orbit/ch.qos.logback.core/source-bundle;project="ch.qo
 s.logback.core.source";tag=v20121108-1250
Bundle-Version: 1.0.7.v20121108-1250
Bundle-ManifestVersion: 2

Name: ch/qos/logback/core/joran/spi/Pattern.java
SHA1-Digest: sHNPdRJB7FVHRYmEdjvX/rRt1mo=

Name: ch/qos/logback/core/recovery/ResilientSyslogOutputStream.java
SHA1-Digest: l6xMKJO0mQRqEbSlc18Z0HmM8G8=

Name: ch/qos/logback/core/net/SMTPAppenderBase.java
SHA1-Digest: JIeJrOQyo9RkM3qp2vxbXBbxEos=

Name: ch/qos/logback/core/joran/action/AppenderRefAction.java
SHA1-Digest: G4U1IW6jz2E2iZJ+IQ+I+5j8W8o=

Name: ch/qos/logback/core/recovery/ResilientOutputStreamBase.java
SHA1-Digest: kfXjky4i9bwaw58nKxMOWFclMbI=

Name: ch/qos/logback/core/LayoutBase.java
SHA1-Digest: 1peaXZWI1Yywyt7kVLdpc/EjGBY=

Name: ch/qos/logback/core/spi/PreSerializationTransformer.java
SHA1-Digest: pD7QFRZ6nNyFiB1PwqJzJn4Xh9A=

Name: ch/qos/logback/core/spi/ContextAware.java
SHA1-Digest: l8rvEk9fTZKmQkh08aGSxT4PGNk=

Name: ch/qos/logback/core/joran/conditional/ThenAction.java
SHA1-Digest: VOYwyhJVtkTrV1EUjiqbGhq9bro=

Name: ch/qos/logback/core/joran/conditional/PropertyEvalScriptBuilder.
 java
SHA1-Digest: y4lp1A8Q9mUkPVNGxOpXlNyEGBQ=

Name: ch/qos/logback/core/pattern/Converter.java
SHA1-Digest: vNhpputskGgMH6klE3PXElF8+DE=

Name: ch/qos/logback/core/joran/action/StatusListenerAction.java
SHA1-Digest: Rh1xOYKDaes9FlFWW1G9qTgsjR4=

Name: ch/qos/logback/core/rolling/DefaultTimeBasedFileNamingAndTrigger
 ingPolicy.java
SHA1-Digest: teeeTU1+9XNxujQF+DLOWqQNl3s=

Name: ch/qos/logback/core/rolling/RollingPolicyBase.java
SHA1-Digest: 753cT1XGe9spECLRDTajA2ZyD3Y=

Name: ch/qos/logback/core/rolling/helper/Compressor.java
SHA1-Digest: bTfz2L8sWVJCjd5h7psWFOE2pdI=

Name: ch/qos/logback/core/pattern/FormattingConverter.java
SHA1-Digest: GVTVQUvquTAkbfO/9vR8bqEnIWI=

Name: ch/qos/logback/core/db/dialect/DBUtil.java
SHA1-Digest: tqfXn2Azkq15iAPV8gIYlMRPhU8=

Name: ch/qos/logback/core/rolling/FixedWindowRollingPolicy.java
SHA1-Digest: j+zg+Kh41YtA9CGx7IiaeKUDuLs=

Name: ch/qos/logback/core/joran/action/ConversionRuleAction.java
SHA1-Digest: y6bJbrLCjVKXVQ305ekqG4e0y2c=

Name: ch/qos/logback/core/helpers/NOPAppender.java
SHA1-Digest: hYjPjD+M8aytSroOYFPdZuEuHE0=

Name: ch/qos/logback/core/util/CachingDateFormatter.java
SHA1-Digest: BZUBcEYM1ZBcAeQdGoI5Boz7g3Y=

Name: ch/qos/logback/core/joran/action/ContextPropertyAction.java
SHA1-Digest: J9mSjgj4n3oBPAvdvbl9H7sXDfY=

Name: ch/qos/logback/core/helpers/Transform.java
SHA1-Digest: epTLhXSh08uiHDwh23l81QwE6oQ=

Name: ch/qos/logback/core/filter/AbstractMatcherFilter.java
SHA1-Digest: O18jGQmiisRL/+8LDTTYMeqY4ks=

Name: ch/qos/logback/core/ContextBase.java
SHA1-Digest: NDg3FYubdWZS07UeDbm+uBKCldc=

Name: ch/qos/logback/core/db/dialect/SQLDialectCode.java
SHA1-Digest: PaRVPF7DZmCLv5mLNPlLWO1nMR0=

Name: ch/qos/logback/core/html/IThrowableRenderer.java
SHA1-Digest: YoB8Sg9ZaJJ2WHcN4S2YMJCNvXo=

Name: ch/qos/logback/core/joran/conditional/Condition.java
SHA1-Digest: N0gzcbNKtESMyF41paeS8wMFtUw=

Name: ch/qos/logback/core/package.html
SHA1-Digest: 8+6ySXqVNteK7ZwtgpR5iePJj8k=

Name: ch/qos/logback/core/joran/action/ActionConst.java
SHA1-Digest: iqlRnJlCSA0lXPeL1i4fLCqJAf0=

Name: ch/qos/logback/core/db/dialect/HSQLDBDialect.java
SHA1-Digest: Ulxp4amMaoYk+bfCdYC4yrirGCE=

Name: ch/qos/logback/core/status/StatusChecker.java
SHA1-Digest: 1l4AuYHWVCv3WEBp1QPidK7zhuI=

Name: ch/qos/logback/core/joran/spi/HostClassAndPropertyDouble.java
SHA1-Digest: d1A9lQQK0ErQUIb0y4UeHkfOhJs=

Name: ch/qos/logback/core/util/EnvUtil.java
SHA1-Digest: zcukyMJEpi8Muo4MT7FJWuXp29o=

Name: ch/qos/logback/core/recovery/RecoveryCoordinator.java
SHA1-Digest: zim+aFWhiF8up9EMDphkACo5z0s=

Name: ch/qos/logback/core/rolling/helper/MonoTypedConverter.java
SHA1-Digest: V8soiVkqymqCDTpX8Q3BAR3zIe4=

Name: ch/qos/logback/core/boolex/Matcher.java
SHA1-Digest: dQLtZCqtm8Fvf5/QRKkVbrdYAXQ=

Name: ch/qos/logback/core/spi/FilterReply.java
SHA1-Digest: KZtGChUPxQTZXIQw2y4pMes+eYg=

Name: ch/qos/logback/core/db/BindDataSourceToJNDIAction.java
SHA1-Digest: 4UdTaIdVmBhJvPaudu6eVy2NNDo=

Name: ch/qos/logback/core/pattern/color/BoldYellowCompositeConverter.j
 ava
SHA1-Digest: rst4Ay/EO9q1MZZUGImSl9I/tK0=

Name: ch/qos/logback/core/pattern/util/AsIsEscapeUtil.java
SHA1-Digest: TbXVCDgtht0T81W74akKZER0S1Q=

Name: ch/qos/logback/core/boolex/JaninoEventEvaluatorBase.java
SHA1-Digest: Uo9gjC1i685cyV8ME8LnKOWdyPI=

Name: ch/qos/logback/core/util/FileSize.java
SHA1-Digest: LBFVjtVYuylGouZNRZsy1dNXvzM=

Name: ch/qos/logback/core/pattern/color/ForegroundCompositeConverterBa
 se.java
SHA1-Digest: b/4JwVk1IQCdDzDnaIM8YahR3ek=

Name: ch/qos/logback/core/status/ViewStatusMessagesServletBase.java
SHA1-Digest: 3+TB5zIbjhNqtrB0XcVdQDkz3Dw=

Name: ch/qos/logback/core/joran/spi/EventPlayer.java
SHA1-Digest: PrqQwAn4pHlxl6OxPVEjr0g0hso=

Name: ch/qos/logback/core/util/package.html
SHA1-Digest: 1dtJQn1ZAkxu7rs95ELfXFm4J7E=

Name: ch/qos/logback/core/util/Loader.java
SHA1-Digest: K1cHVIy14AUj40KEEgVfexTsRHw=

Name: ch/qos/logback/core/util/PropertySetterException.java
SHA1-Digest: 0/hwKj1+JdZrnt8byq106ERWua8=

Name: ch/qos/logback/core/ConsoleAppender.java
SHA1-Digest: 578ovg8hfeUTMawrdZcK9MckC/M=

Name: ch/qos/logback/core/db/dialect/MySQLDialect.java
SHA1-Digest: Ru8GOSTLrL8rEji5cTkO7SRpbaY=

Name: ch/qos/logback/core/pattern/package.html
SHA1-Digest: xFtYv+Gz1C4mMcsCX/OVu/Zd0Eo=

Name: ch/qos/logback/core/pattern/parser/FormattingNode.java
SHA1-Digest: 03gX1rr35hgVQzhrqdWAq9MO2uI=

Name: ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPoli
 cyBase.java
SHA1-Digest: FZzRwPJVXFVu0NFfJFzv1Uti4xY=

Name: ch/qos/logback/core/LogbackException.java
SHA1-Digest: pnavpqP/jlBkD6yzmwQ1fEB+sj0=

Name: ch/qos/logback/core/joran/action/NestedComplexPropertyIA.java
SHA1-Digest: DGBJJIkdGGCzwwtsYnqC37S5Bwg=

Name: ch/qos/logback/core/status/StatusUtil.java
SHA1-Digest: KwzgQH7kka+/cqFGI0HZfcNpQU8=

Name: ch/qos/logback/core/status/package.html
SHA1-Digest: 3cOCFjILSEGEttKgfDMgM8UwwZQ=

Name: ch/qos/logback/core/spi/PropertyContainer.java
SHA1-Digest: okumGtGxl8aXMmJaLJmQmhUTjmY=

Name: ch/qos/logback/core/rolling/helper/DefaultArchiveRemover.java
SHA1-Digest: sBxwSauPnQVU6Gzgxo0V5FWoxPs=

Name: ch/qos/logback/core/status/StatusListener.java
SHA1-Digest: IUkm8ArgKwntxTvjh/VTbpNzlmU=

Name: ch/qos/logback/core/joran/spi/ActionException.java
SHA1-Digest: OuvFBt567mwq+fscjOUtIBKtQGo=

Name: ch/qos/logback/core/joran/spi/XMLUtil.java
SHA1-Digest: CWe0KOq5YNOtBX6VEbo0NcbsPsc=

Name: ch/qos/logback/core/pattern/color/MagentaCompositeConverter.java
SHA1-Digest: Q59Xu1wdW0JGaFKpsdkuQRUQeiI=

Name: ch/qos/logback/core/rolling/TriggeringPolicy.java
SHA1-Digest: Y0DNZr1B/e4YeBtuWpQjiiUTGPg=

Name: ch/qos/logback/core/AsyncAppenderBase.java
SHA1-Digest: jKO5i1J448mIoZq7UnnCVi30rdw=

Name: ch/qos/logback/core/helpers/CyclicBuffer.java
SHA1-Digest: fqAx7X8xPfRv0DU5Er7nnM46nAM=

Name: ch/qos/logback/core/joran/util/ConfigurationWatchListUtil.java
SHA1-Digest: bYGq6T0dFuW7T/e0uBlhZmQX9Ns=

Name: ch/qos/logback/core/filter/Filter.java
SHA1-Digest: lDSeOOlS/FbYuRUHcWp9RvO99CY=

Name: ch/qos/logback/core/joran/event/BodyEvent.java
SHA1-Digest: sMFlBJftQZLbQmJ6sJQDV34TgBE=

Name: ch/qos/logback/core/db/dialect/SybaseSqlAnywhereDialect.java
SHA1-Digest: EEZ/oEjSgm7aEabVCjNWlQ9vJmo=

Name: ch/qos/logback/core/spi/FilterAttachableImpl.java
SHA1-Digest: LHdV8aWRgNC4bh2GzMt3lxS6go4=

Name: ch/qos/logback/core/encoder/ObjectStreamEncoder.java
SHA1-Digest: YZR0ME4Cfab8Ac0FbsSuBbrOsR0=

Name: ch/qos/logback/core/AppenderBase.java
SHA1-Digest: a6tO7MbBVGauTsqb+1HxjKREPSM=

Name: ch/qos/logback/core/joran/event/InPlayListener.java
SHA1-Digest: qKokwLfNyvASbTyc9mqepBh0JJo=

Name: ch/qos/logback/core/filter/EvaluatorFilter.java
SHA1-Digest: yppxSAqJA2PwhrIhHRxIjbrB6n0=

Name: ch/qos/logback/core/spi/PropertyDefiner.java
SHA1-Digest: J3PbO1RgXQW6saajnFFcu+Wr1HU=

Name: ch/qos/logback/core/joran/action/ImplicitAction.java
SHA1-Digest: Y+Bbb6VyW4CJX+hFsJN23S/UjS4=

Name: ch/qos/logback/core/BasicStatusManager.java
SHA1-Digest: Td0BVtaQPoy+qVGZhoS3FgwI9DU=

Name: ch/qos/logback/core/filter/package.html
SHA1-Digest: aAioE9ut4fjo6aqitW4XkBLbAk4=

Name: META-INF/eclipse.inf
SHA1-Digest: KyT9FF7C7t86NoBoa2kZT3ZJBfw=

Name: ch/qos/logback/core/status/StatusListenerAsList.java
SHA1-Digest: MH49WCtRucf/XCgvUWW7O0YCpfM=

Name: ch/qos/logback/core/db/JNDIConnectionSource.java
SHA1-Digest: U8YoR9i1u3HB4JZibsiwwq4RVuU=

Name: ch/qos/logback/core/boolex/EvaluationException.java
SHA1-Digest: qsQXELmV7nRIUetBiZxXlwdAPtQ=

Name: ch/qos/logback/core/joran/action/PropertyAction.java
SHA1-Digest: 7quqwIxgz1DdeLgvf/ahK4lMsXk=

Name: ch/qos/logback/core/util/Duration.java
SHA1-Digest: 1WkBtSKNejuaWaUG2ZngDjBuoag=

Name: ch/qos/logback/core/util/AggregationType.java
SHA1-Digest: T9OpjW5f6kwGeMvlGAy5yPCj7yI=

Name: ch/qos/logback/core/status/InfoStatus.java
SHA1-Digest: DbWEPAYUJnnGPS4s/ZFCl1xDtMg=

Name: ch/qos/logback/core/util/TimeUtil.java
SHA1-Digest: mTVjC/ULm2PK0FdouR54IMykajc=

Name: ch/qos/logback/core/rolling/helper/RollingCalendar.java
SHA1-Digest: wx6IpUpgrAOKWUiWP63Gr7kRmow=

Name: ch/qos/logback/core/pattern/color/BoldCyanCompositeConverter.jav
 a
SHA1-Digest: W+9f7HNEZJL/prvim/wpUisPqYc=

Name: ch/qos/logback/core/sift/SiftingAppenderBase.java
SHA1-Digest: bpcl+kN3J426s/Ns9u9nGqIEw9g=

Name: ch/qos/logback/core/util/DynamicClassLoadingException.java
SHA1-Digest: wIStsISSjy/DChx9d8hm3sb3Xns=

Name: ch/qos/logback/core/util/DatePatternToRegexUtil.java
SHA1-Digest: y1KawRY6tHgvmvlhnN/aPPJb/qM=

Name: ch/qos/logback/core/boolex/EventEvaluatorBase.java
SHA1-Digest: vn4orj5LFuaK67m2A+JdO6pMlmM=

Name: ch/qos/logback/core/sift/AppenderTracker.java
SHA1-Digest: wQumGBDr144Skpm3yt2CG2Rb9PQ=

Name: ch/qos/logback/core/encoder/EventObjectInputStream.java
SHA1-Digest: zQ58cujG4+GYLnMCMNtPBKd3b3U=

Name: ch/qos/logback/core/spi/ContextAwareBase.java
SHA1-Digest: aVMKbueOs0NZ4Ov5hCGE4sx3hdw=

Name: ch/qos/logback/core/PropertyDefinerBase.java
SHA1-Digest: HHYlXsxjjUrEQRsXmiDpfp5f1Ck=

Name: ch/qos/logback/core/joran/action/AbstractEventEvaluatorAction.ja
 va
SHA1-Digest: IeSmLZw2zt2Jbb3HUkJxlNxpC+o=

Name: ch/qos/logback/core/joran/spi/ConsoleTarget.java
SHA1-Digest: UPgEyFGnRaPbTkRGcxUKgpYY494=

Name: ch/qos/logback/core/rolling/helper/FileFilterUtil.java
SHA1-Digest: mg4s0px1cC6/RUDuqUcpkjVit/I=

Name: ch/qos/logback/core/pattern/PatternLayoutBase.java
SHA1-Digest: 0rEOyz31Kn1r6wDBG+XVCULz+ZA=

Name: plugin.properties
SHA1-Digest: MPvQwfEZ2Ta16BKiIhpeXf7finI=

Name: ch/qos/logback/core/spi/ContextAwareImpl.java
SHA1-Digest: iIYJQxt53DzahpN706ia1/eOSqQ=

Name: ch/qos/logback/core/rolling/helper/IntegerTokenConverter.java
SHA1-Digest: xC/Q7ofmiVw5h2nu71uQpgxferw=

Name: ch/qos/logback/core/spi/CyclicBufferTrackerImpl.java
SHA1-Digest: ei46lQrdMqQ7Nu7Q4vkCuCL3ijc=

Name: ch/qos/logback/core/spi/AppenderAttachable.java
SHA1-Digest: GF/2bIoWlf7ncxA4NDHpNlDwh+A=

Name: ch/qos/logback/core/joran/event/StartEvent.java
SHA1-Digest: hG9xCba3ttsO0zdgwRiVj6kzIM4=

Name: ch/qos/logback/core/pattern/color/BoldMagentaCompositeConverter.
 java
SHA1-Digest: XASeC3L3Ik3/d9SJgvRdueIfZZM=

Name: ch/qos/logback/core/status/OnConsoleStatusListener.java
SHA1-Digest: sirJLxju2Fh6BEHSlkDMnt8T3Sc=

Name: ch/qos/logback/core/CoreConstants.java
SHA1-Digest: Gkp1n7rwFqmR2kuB3sZSKdtJXqk=

Name: ch/qos/logback/core/net/SocketAppenderBase.java
SHA1-Digest: a5R5kbnMyPibbQaoChlshKb6ha0=

Name: ch/qos/logback/core/rolling/helper/DateTokenConverter.java
SHA1-Digest: KhGlL1JbFuX1TI7NyBdtEdAwaw0=

Name: ch/qos/logback/core/util/StatusPrinter.java
SHA1-Digest: XrgbERGhfvctjBwA2Xcj76Q5oN4=

Name: ch/qos/logback/core/util/FileUtil.java
SHA1-Digest: L4dpqFja1RLUYXz2N9giqMEKDiw=

Name: ch/qos/logback/core/util/InvocationGate.java
SHA1-Digest: jDBFfkKHeQYdcsB7Tcf9MkxxpJQ=

Name: ch/qos/logback/core/rolling/helper/CompressionMode.java
SHA1-Digest: wC8RearGZyD04yvIgnlG8HTL2Qs=

Name: ch/qos/logback/core/joran/action/IADataForComplexProperty.java
SHA1-Digest: gV9K5EeJAW8bLmHAdf9so77n9r8=

Name: ch/qos/logback/core/status/StatusBase.java
SHA1-Digest: vd6faOOrcnwZ/bDF4SWmDmdFln4=

Name: ch/qos/logback/core/joran/action/IADataForBasicProperty.java
SHA1-Digest: 6VtahKWICX4c/ii/YJUnUhqvMBI=

Name: ch/qos/logback/core/joran/conditional/PropertyWrapperForScripts.
 java
SHA1-Digest: fz+TwAwTNY5DukrLMUPfyzCY6Mk=

Name: ch/qos/logback/core/OutputStreamAppender.java
SHA1-Digest: 6lWghwyLrlVJlZMlBoPL+Gfi8Dw=

Name: ch/qos/logback/core/pattern/color/CyanCompositeConverter.java
SHA1-Digest: 8YpWPxA6j2woSnFrQAiNLDnrmyU=

Name: ch/qos/logback/core/pattern/parser/Node.java
SHA1-Digest: 9LJwrAKuPkQSkioRd1iGf3Bj7vw=

Name: ch/qos/logback/core/db/dialect/SQLiteDialect.java
SHA1-Digest: R1BMUL1SkJS9U6e8zNjmgbsAXrw=

Name: ch/qos/logback/core/pattern/parser/Compiler.java
SHA1-Digest: jwPK4nLp8nrTgye5spCMlQhRPJs=

Name: ch/qos/logback/core/Context.java
SHA1-Digest: W+onX5fpzWXj34su6qgdY+6dXvk=

Name: ch/qos/logback/core/rolling/RolloverFailure.java
SHA1-Digest: yf3nlvcvIJmB5Fr/y2jeuyxX8QE=

Name: ch/qos/logback/core/joran/util/PropertySetter.java
SHA1-Digest: ZTofSoqz3Em6eLJHSARJqqZ3YSk=

Name: ch/qos/logback/core/pattern/ReplacingCompositeConverter.java
SHA1-Digest: eTYBnRwFwT5gTpEs3zG403p7o3w=

Name: ch/qos/logback/core/spi/LifeCycle.java
SHA1-Digest: ZlgRrZIr2miDOn1wPMNZ5ewtFnc=

Name: ch/qos/logback/core/encoder/EchoEncoder.java
SHA1-Digest: UgG9wygMI4BRRxir88tDDkoO80c=

Name: ch/qos/logback/core/pattern/PatternLayoutEncoderBase.java
SHA1-Digest: ZKAQeR4MOPx7CUWO0PSM9SPIBSc=

Name: ch/qos/logback/core/pattern/color/RedCompositeConverter.java
SHA1-Digest: gqS55ljcnrrb8Y8OJzC7/YMwFPw=

Name: ch/qos/logback/core/joran/action/NewRuleAction.java
SHA1-Digest: /c+CxeYq9WpoH66GIiE9rnEyoVM=

Name: ch/qos/logback/core/rolling/RollingFileAppender.java
SHA1-Digest: hlGm+x7nmrxvF124GVXqoZN21s4=

Name: ch/qos/logback/core/subst/Parser.java
SHA1-Digest: NC9lQc0ZJX8fsiG4nV18uVNE1uE=

Name: ch/qos/logback/core/db/DBHelper.java
SHA1-Digest: NfiXIgR5l8J4lDBRtmAFCo/WaTc=

Name: ch/qos/logback/core/spi/CyclicBufferTracker.java
SHA1-Digest: OSKHaXJnGQub0LT2/VFw5X0b9PY=

Name: ch/qos/logback/core/boolex/package.html
SHA1-Digest: CwXbedL7omfMx8gxMwfm/jUZqKw=

Name: ch/qos/logback/core/spi/AppenderAttachableImpl.java
SHA1-Digest: 4PavjCnbo+j0M0HNZ9mnZ16dcck=

Name: ch/qos/logback/core/encoder/NonClosableInputStream.java
SHA1-Digest: lOrFMVpRag2bKzUziL+Az3gKZsI=

Name: ch/qos/logback/core/read/CyclicBufferAppender.java
SHA1-Digest: TzJKdZVbq8etIomeSgDFxgiyEXk=

Name: ch/qos/logback/core/html/NOPThrowableRenderer.java
SHA1-Digest: 3K4lQ93jMp9eaNUm6h7nMAyXGMk=

Name: ch/qos/logback/core/db/dialect/MsSQLDialect.java
SHA1-Digest: 1gXzLLHobeJZBhWlSLjhkHPhZSA=

Name: ch/qos/logback/core/net/JMSAppenderBase.java
SHA1-Digest: PKZXlAIEzPLpgrZKrSQAHR3GsTk=

Name: ch/qos/logback/core/spi/LogbackLock.java
SHA1-Digest: werNSXtufm5IA/P+3pzznOszis8=

Name: ch/qos/logback/core/db/dialect/SQLDialect.java
SHA1-Digest: BtWcgnk3qlsqcmUITbnuw0ybBiU=

Name: ch/qos/logback/core/joran/action/NOPAction.java
SHA1-Digest: dyHXrkthld0T/Ds4iISbM2R64fk=

Name: ch/qos/logback/core/db/DataSourceConnectionSource.java
SHA1-Digest: otmrShBY1GEH9k78KsoaN8DAQc0=

Name: ch/qos/logback/core/joran/conditional/ThenOrElseActionBase.java
SHA1-Digest: S9qVQjoNkwVykgWnWHjihBvR3qA=

Name: ch/qos/logback/core/status/ErrorStatus.java
SHA1-Digest: 1uxABECJF31xpM/O1kAUr/keEoo=

Name: ch/qos/logback/core/pattern/color/BlackCompositeConverter.java
SHA1-Digest: foqg/LIsLt3jXgcLr/+3aeWObXs=

Name: ch/qos/logback/core/subst/Token.java
SHA1-Digest: bAGKsMt3+tLx7e8lU/HRDbnqYXg=

Name: ch/qos/logback/core/spi/DeferredProcessingAware.java
SHA1-Digest: Au+28B3mgY7/A8+DenojmSIG8qw=

Name: ch/qos/logback/core/db/dialect/PostgreSQLDialect.java
SHA1-Digest: Riq9GSsRVp0PMkU3K8TFzbAhDSY=

Name: ch/qos/logback/core/pattern/parser/CompositeNode.java
SHA1-Digest: xjOb+d37Q7eRmhFWEtNAd7WIhaA=

Name: ch/qos/logback/core/rolling/TriggeringPolicyBase.java
SHA1-Digest: x9h5kDa0AOJx9t2BZvyA7LIhheA=

Name: ch/qos/logback/core/pattern/SpacePadder.java
SHA1-Digest: ytIL4TGUo3H/qjNjgTerUXObGvA=

Name: ch/qos/logback/core/rolling/helper/AsynchronousCompressor.java
SHA1-Digest: d2C/qzI+5JJBXX/jTApNkUH5oJI=

Name: ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPoli
 cy.java
SHA1-Digest: UGF48SMIFzRERFYEEwxxQZdM8yE=

Name: ch/qos/logback/core/pattern/color/ANSIConstants.java
SHA1-Digest: 1JXLqn5pN4AdTU9PSdIRmwln5N4=

Name: ch/qos/logback/core/encoder/ByteArrayUtil.java
SHA1-Digest: 08o/ojOhFgYbf0anOyfDnk1Nzng=

Name: ch/qos/logback/core/util/IncompatibleClassException.java
SHA1-Digest: fybBUECVKTMyrrGbZr7OeAmbx2g=

Name: ch/qos/logback/core/subst/NodeToStringTransformer.java
SHA1-Digest: u9OjQJdfiRs7vtAxDg+yP1HoYY0=

Name: ch/qos/logback/core/rolling/helper/CompressionRunnable.java
SHA1-Digest: wdElup4L+TbSH1bo56BA5A/Wybg=

Name: ch/qos/logback/core/rolling/SizeAndTimeBasedFNATP.java
SHA1-Digest: QrHYuQEARP+BxASa+cRk8sxKXwA=

Name: ch/qos/logback/core/util/ContextUtil.java
SHA1-Digest: 30LHqxnHeq/1JmIfMaPJQQlc2to=

Name: ch/qos/logback/core/FileAppender.java
SHA1-Digest: jMN+nyoVI1M7Ot37lNu7gEFSprM=

Name: ch/qos/logback/core/pattern/parser/Parser.java
SHA1-Digest: u9hU/XJCWy/9nicCnxcHNAYO2ew=

Name: ch/qos/logback/core/status/StatusManager.java
SHA1-Digest: 45sbRR7rIzEEOSCQIISB7c0KcBc=

Name: ch/qos/logback/core/sift/SiftingJoranConfiguratorBase.java
SHA1-Digest: BimiloBJBflAfh3AjKGdaqPFs50=

Name: ch/qos/logback/core/pattern/color/BoldGreenCompositeConverter.ja
 va
SHA1-Digest: QZY5PnRYUoFcBTGbSDq4SOm56Fk=

Name: ch/qos/logback/core/joran/JoranConfiguratorBase.java
SHA1-Digest: 3L+YISaEHK6O22hsol6orm2kC8Q=

Name: ch/qos/logback/core/db/ConnectionSource.java
SHA1-Digest: lrQxqf6jxOvo69IjiYEb8b6sdlI=

Name: ch/qos/logback/core/html/package.html
SHA1-Digest: hrY9FdHpLTUk42rleabwDRY79yo=

Name: ch/qos/logback/core/pattern/color/YellowCompositeConverter.java
SHA1-Digest: E2c/joRm0dhNdlv4jy3O9sGcl2k=

Name: ch/qos/logback/core/joran/spi/Interpreter.java
SHA1-Digest: LX3FxVtxnIt/hhXtCEtS0nRNwLg=

Name: ch/qos/logback/core/db/DriverManagerConnectionSource.java
SHA1-Digest: pzsKicZzVo5Psd9jNMPKTc1ziGg=

Name: ch/qos/logback/core/db/package.html
SHA1-Digest: jfW/GhbFFQA6+uGczSPV/3lLP5U=

Name: ch/qos/logback/core/Layout.java
SHA1-Digest: ygVxXGf9G6HK2qtwFBRCJM30nxo=

Name: ch/qos/logback/core/pattern/parser/SimpleKeywordNode.java
SHA1-Digest: 0mFIn69YW8X91CRcrOKz9/0p3a0=

Name: ch/qos/logback/core/pattern/parser/Token.java
SHA1-Digest: uok2O7s6GKY19sf2UmSAwX1SY8E=

Name: ch/qos/logback/core/rolling/helper/RenameUtil.java
SHA1-Digest: pEmLEW/0of6WTdmv15eMdnYCGHQ=

Name: ch/qos/logback/core/Appender.java
SHA1-Digest: x68woIji4s7w+twWFToy5MZcrgE=

Name: ch/qos/logback/core/rolling/helper/package.html
SHA1-Digest: ueqVvqTrMl4kRlLardlW49rrGng=

Name: ch/qos/logback/core/pattern/color/BoldWhiteCompositeConverter.ja
 va
SHA1-Digest: 9FPr9AV7tmgYmcAW+zL3ETCDW4I=

Name: ch/qos/logback/core/joran/spi/InterpretationContext.java
SHA1-Digest: WkNSxskNCgux1CaiHz0t8xj2TEQ=

Name: ch/qos/logback/core/joran/spi/RuleStore.java
SHA1-Digest: +hbjNx2Z/47q9cqWlXpvCj8rDkQ=

Name: ch/qos/logback/core/joran/util/StringToObjectConverter.java
SHA1-Digest: rfQrg1VCq/gAUg4tDhv0NJrfy10=

Name: about.html
SHA1-Digest: oXBJd6QAQkK3IFu1yqF1bVxYwzA=

Name: ch/qos/logback/core/net/package.html
SHA1-Digest: ZBbiCQSwRZGXLrv3llwql0fHf3I=

Name: ch/qos/logback/core/html/HTMLLayoutBase.java
SHA1-Digest: ZhE5vAu/DRheEjkzWdzMObEaMk8=

Name: ch/qos/logback/core/joran/package.html
SHA1-Digest: QAGuLuzX2/sz0kuX9cSTTIGFpDU=

Name: ch/qos/logback/core/sift/DefaultDiscriminator.java
SHA1-Digest: QgwuLcUNid5w4RElA8rkDw2yW8o=

Name: ch/qos/logback/core/rolling/helper/ArchiveRemover.java
SHA1-Digest: jfOcJVVOAJo4dvR8MYdkvRJu3AY=

Name: ch/qos/logback/core/db/dialect/OracleDialect.java
SHA1-Digest: VAGDm5YfyJeEMolvqX59PT1+kYg=

Name: ch/qos/logback/core/joran/conditional/ElseAction.java
SHA1-Digest: 8tzSuFpq9PUdTQibtf2yedxy+8E=

Name: ch/qos/logback/core/joran/spi/JoranException.java
SHA1-Digest: eHRYRexSgyq3EFYdk2LG7i/TWqM=

Name: ch/qos/logback/core/joran/action/TimestampAction.java
SHA1-Digest: CrzkRWxE4HkfU8E0VLyY8KrvOmo=

Name: ch/qos/logback/core/sift/AppenderTrackerImpl.java
SHA1-Digest: tDfwsynGJSDgBPeMnsVyyJFktvg=

Name: ch/qos/logback/core/helpers/package.html
SHA1-Digest: 76FRxUzqQFPfbE46M2L47IMOjQg=

Name: ch/qos/logback/core/net/SyslogAppenderBase.java
SHA1-Digest: 2epTG4IO/E33TA6Q2W8p3pnzd/U=

Name: ch/qos/logback/core/pattern/DynamicConverter.java
SHA1-Digest: 5q+3OrFoey0WTSnMTZUNDk9Szxo=

Name: ch/qos/logback/core/spi/ScanException.java
SHA1-Digest: J/Yqzczb0SRAETBs+EA7ClUs3Gk=

Name: ch/qos/logback/core/pattern/PostCompileProcessor.java
SHA1-Digest: xqVp0qj3CV/yp751OvPukrk0iXY=

Name: ch/qos/logback/core/net/LoginAuthenticator.java
SHA1-Digest: QZyZjSEC2N4laMN3S+dWHkRra4g=

Name: ch/qos/logback/core/pattern/util/RestrictedEscapeUtil.java
SHA1-Digest: OCIUUnikPGSwZdkA7tx+Y1XHjWQ=

Name: ch/qos/logback/core/rolling/TimeBasedRollingPolicy.java
SHA1-Digest: h9zrbz94uhzrNbsQNiu2dA3dJTc=

Name: ch/qos/logback/core/pattern/CompositeConverter.java
SHA1-Digest: QVO88JXv18IXTiViVBU+Sh2OOAU=

Name: ch/qos/logback/core/boolex/EventEvaluator.java
SHA1-Digest: U4r2M8UEY9OUP70vP1slKNewSao=

Name: ch/qos/logback/core/db/DBAppenderBase.java
SHA1-Digest: miOobjYq+b/VmKlFIYBTDA/QCl8=

Name: ch/qos/logback/core/rolling/helper/PeriodicityType.java
SHA1-Digest: 8Xph+1NhgngfL+ozd16Ljd4oTkA=

Name: ch/qos/logback/core/joran/conditional/IfAction.java
SHA1-Digest: b5QiHEdoiDoe9R1nMwPGMTjQSuo=

Name: ch/qos/logback/core/pattern/parser/OptionTokenizer.java
SHA1-Digest: x0sLSlfiisJKyqlJ5AaHcSJ73B0=

Name: ch/qos/logback/core/subst/Node.java
SHA1-Digest: QbLjY7V8F2DYdeqOWZyvwovYSYc=

Name: ch/qos/logback/core/html/CssBuilder.java
SHA1-Digest: 1qzLZuP2Js3+rKU1dE5wU/CKCUE=

Name: ch/qos/logback/core/joran/spi/NoAutoStart.java
SHA1-Digest: eBWrHSZCPVvenK2PsNemc/gFUCI=

Name: ch/qos/logback/core/joran/event/EndEvent.java
SHA1-Digest: O5on3MRqIwq2pTl8c95pdzS1/4A=

Name: ch/qos/logback/core/util/ContentTypeUtil.java
SHA1-Digest: 1JC5EjdjYbs4+1Kt1ph4ufMmbjI=

Name: ch/qos/logback/core/pattern/FormatInfo.java
SHA1-Digest: nVGYLyct4zX0i38x2FLQ/aFxHJw=

Name: ch/qos/logback/core/db/dialect/package.html
SHA1-Digest: 6gsqlEAzu/vRCsYiP3+zOqF7HZ0=

Name: ch/qos/logback/core/pattern/color/BoldBlueCompositeConverter.jav
 a
SHA1-Digest: cTu9b8ecwh5vgm50LvMMIEZfrMY=

Name: ch/qos/logback/core/pattern/color/GreenCompositeConverter.java
SHA1-Digest: gwwo7CdOVHFpwru03vD/iafvyh4=

Name: ch/qos/logback/core/util/OptionHelper.java
SHA1-Digest: iiIgzw/BO793soPKonwTPLeXMjQ=

Name: ch/qos/logback/core/joran/action/ParamAction.java
SHA1-Digest: 2JTWRMezvHQSu5ZxIGR9JftwhZ0=

Name: ch/qos/logback/core/util/SystemInfo.java
SHA1-Digest: vz6Bh68BnSxo4k6fCItlRxIKCWI=

Name: ch/qos/logback/core/joran/action/IncludeAction.java
SHA1-Digest: CfjVp5ZWD54M6PeNgUl1FbPz3rk=

Name: ch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry.jav
 a
SHA1-Digest: nFt39iAYwYZqtfHSgDOGriaSfNw=

Name: ch/qos/logback/core/encoder/LayoutWrappingEncoder.java
SHA1-Digest: si8gkRgprpC39AztKgeQ9hFltAA=

Name: ch/qos/logback/core/pattern/ConverterUtil.java
SHA1-Digest: Z1fo3MV/8tUMn5rOUYGGsJ6LsqQ=

Name: ch/qos/logback/core/rolling/helper/FileNamePattern.java
SHA1-Digest: 8ghUApdJaJD+aXUqR5NPDnDF94Q=

Name: ch/qos/logback/core/sift/Discriminator.java
SHA1-Digest: BWUWQesDtdaot7A4H2orf+XtVPA=

Name: ch/qos/logback/core/pattern/util/RegularEscapeUtil.java
SHA1-Digest: JgBkrzaHZD2UwMs5AOzntafjHTQ=

Name: ch/qos/logback/core/joran/spi/ConfigurationWatchList.java
SHA1-Digest: Nm5eDunUC0VEoe0M5bIJnHqwe3I=

Name: ch/qos/logback/core/joran/spi/DefaultClass.java
SHA1-Digest: Hev0GR3/ScknPd6kAg8rVv6WoEk=

Name: ch/qos/logback/core/joran/spi/NoAutoStartUtil.java
SHA1-Digest: 9A0nkJz3Ftr8io3PrcN3DtCtSmM=

Name: ch/qos/logback/core/joran/spi/SimpleRuleStore.java
SHA1-Digest: QkgazK7YtUj/4lP66ih8n+eTsaY=

Name: ch/qos/logback/core/pattern/util/AlmostAsIsEscapeUtil.java
SHA1-Digest: pLTxJnL2E2pDynLwgrEY9e42TX8=

Name: ch/qos/logback/core/spi/package.html
SHA1-Digest: eprPoiEf1rkdx0lTTN5liuLrrws=

Name: ch/qos/logback/core/joran/action/Action.java
SHA1-Digest: 4lGEuGo04GVf6SP7GJSYLqL0XWw=

Name: ch/qos/logback/core/pattern/parser/TokenStream.java
SHA1-Digest: 3XcJjMaqLbUXeXSL5hMDbDnkkaw=

Name: ch/qos/logback/core/recovery/ResilientFileOutputStream.java
SHA1-Digest: K62vIjZT4ZI0yuQiaxFUkVyCyCc=

Name: ch/qos/logback/core/pattern/color/WhiteCompositeConverter.java
SHA1-Digest: ekBdnb8Qt3uyDv/76ViuZNarB28=

Name: ch/qos/logback/core/rolling/package.html
SHA1-Digest: ch1Pvz2/QHGNULM+tuWarTr+rjE=

Name: ch/qos/logback/core/db/dialect/H2Dialect.java
SHA1-Digest: YgO5aP9NbK2Y5kElx8b2+PtW5vo=

Name: ch/qos/logback/core/status/Status.java
SHA1-Digest: R39ux17CA6Z1zdbUypHOXzemt3E=

Name: ch/qos/logback/core/pattern/util/IEscapeUtil.java
SHA1-Digest: oV9iSi/xUj6qD6ylLG4mMElOAmE=

Name: ch/qos/logback/core/spi/FilterAttachable.java
SHA1-Digest: 7T15eTgp2a3jS8b8kdMrDCb8k8I=

Name: ch/qos/logback/core/subst/Tokenizer.java
SHA1-Digest: q1KGylC2xUS70Qr+48PLl7EPtYA=

Name: ch/qos/logback/core/encoder/Encoder.java
SHA1-Digest: c66ZnqwgxwlrrbI8xfBJMr7R0rM=

Name: ch/qos/logback/core/joran/event/SaxEventRecorder.java
SHA1-Digest: 0O00/lYnSXnWQTADscuRsnYWVao=

Name: ch/qos/logback/core/net/SyslogConstants.java
SHA1-Digest: 4MoskN0Ur8m25y+LEMQxj9Eegxs=

Name: ch/qos/logback/core/rolling/SizeBasedTriggeringPolicy.java
SHA1-Digest: CX562TFKm9cqAujvgzTleRVXf2c=

Name: ch/qos/logback/core/property/FileExistsPropertyDefiner.java
SHA1-Digest: ONNsiokOHkYzqRMF7vE+ingrsqU=

Name: ch/qos/logback/core/util/CharSequenceState.java
SHA1-Digest: 6uIawZMiypbWmBBmGg4HUgzFIRw=

Name: ch/qos/logback/core/joran/action/ActionUtil.java
SHA1-Digest: +mBUb74Jkm8rhR/tB3p2t02bYw4=

Name: ch/qos/logback/core/sift/AppenderFactoryBase.java
SHA1-Digest: B7JGGX3HNURfNDoiMyE2n++XbS8=

Name: ch/qos/logback/core/joran/GenericConfigurator.java
SHA1-Digest: 2hAMADa/spoKc9RWjQy1/A2m/w0=

Name: ch/qos/logback/core/status/WarnStatus.java
SHA1-Digest: dl5pCmrwP/gwQgHU+iQ+7bflQ4M=

Name: ch/qos/logback/core/UnsynchronizedAppenderBase.java
SHA1-Digest: 5jtRt4TcynUqSpy2sbqlL9+snKw=

Name: ch/qos/logback/core/layout/EchoLayout.java
SHA1-Digest: gFQG3qwEGqDIglyQEDU/BAX75RA=

Name: ch/qos/logback/core/rolling/helper/SizeAndTimeBasedArchiveRemove
 r.java
SHA1-Digest: jr44KPCeOxiCJbt/SObTKdRCark=

Name: ch/qos/logback/core/joran/action/NestedBasicPropertyIA.java
SHA1-Digest: PfhZ1a4LOfIiNZ9Xb12c4UPS6AY=

Name: ch/qos/logback/core/pattern/color/BlueCompositeConverter.java
SHA1-Digest: JABbdew6dFpsRpsRwubP+iVouSQ=

Name: ch/qos/logback/core/rolling/RollingPolicy.java
SHA1-Digest: G/DbDkYMqTSPg9KY04GoMXK2MX8=

Name: ch/qos/logback/core/rolling/helper/TimeBasedArchiveRemover.java
SHA1-Digest: aAZd/UxnqwPzB0RpRLCFAQ3sQRw=

Name: ch/qos/logback/core/joran/action/DefinePropertyAction.java
SHA1-Digest: 0G2Fpb00kCpHRTq081IDdiUdkVg=

Name: ch/qos/logback/core/joran/event/SaxEvent.java
SHA1-Digest: 8jsRV06P4O0b4Oa/78hwOQkysBc=

Name: ch/qos/logback/core/helpers/ThrowableToStringArray.java
SHA1-Digest: /kr1tifsOoSt1Xg9fMPyc5SEgqg=

Name: ch/qos/logback/core/pattern/IdentityCompositeConverter.java
SHA1-Digest: UYpVI6WB2s/WjGksvbrxv0o2pm4=

Name: ch/qos/logback/core/joran/action/AppenderAction.java
SHA1-Digest: y1Qw2C8sZZyIkfIHk7WYsMd6IEs=

Name: ch/qos/logback/core/pattern/LiteralConverter.java
SHA1-Digest: rL/BlouGFBzH0D+1A5tQqjqatY4=

Name: ch/qos/logback/core/rolling/helper/TokenConverter.java
SHA1-Digest: LBdX5HV7TYS4DOJoWGaf9JL16rA=

Name: ch/qos/logback/core/read/ListAppender.java
SHA1-Digest: wNh/onbjQaeAHJg5mZP8I1TqmYA=

Name: ch/qos/logback/core/db/ConnectionSourceBase.java
SHA1-Digest: O3O4cvc1OZqrtal1F/85rzoMpug=

Name: ch/qos/logback/core/encoder/EncoderBase.java
SHA1-Digest: 3e32ZzqPSRoyVX8K++8TIRhTe6E=

Name: ch/qos/logback/core/net/SyslogOutputStream.java
SHA1-Digest: h/8d3eh4ME2/jZ4Xj086CNFSLbA=

Name: ch/qos/logback/core/pattern/color/BoldRedCompositeConverter.java
SHA1-Digest: 02y9KR0wHyNdo95NgWPDGnZ7qno=

Name: ch/qos/logback/core/util/CharSequenceToRegexMapper.java
SHA1-Digest: 5o/XSCT9EV/Zhg3dPdN8U3tfGeg=
```

Could you show me any Export-Package or Import-Package directive?

So, I'm insisting that almost all artifacts in Central has no manifests with Exports or Imports in source jars. I'm insisting that it's incorrect and breaks dependency resolution. I'm insisting that you should not include manifests with exports/imports into source jars.

Ok, here is javadoc for export-package: https://osgi.org/javadoc/r5/core/org/osgi/framework/Constants.html#EXPORT_PACKAGE

> Manifest header identifying the packages that the bundle offers to the Framework for export. 

There is nothing to export from source jar! There are no classes inside!

Please stop breaking our fragile world.

Guys, could you just disable manifest copying?..

@normanmaurer - I'm also not familiar with OSGi.

@FeiWongReed - Would you mind submitting a PR to remedy the issue (I don't think many Netty devs have OSGi experience)?  Maybe it will be easier for you and @ChristianSchwarz to discuss the pain points.

Ok, here is pull request: https://github.com/netty/netty/pull/4045

I think that I solved problem at all. For now main jars have correct osgi manifests and source jars have eclipse-specific manifests.

@FeiWongReed - Thanks!  Lets move the detailed discussion to the PR.


Pull request review comments:

Patch that resolved the issue:
diff --git a/pom.xml b/pom.xml
index f7ed52d1e1e..fd0e0e48ae8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1148,16 +1148,41 @@
           </execution>
         </executions>
       </plugin>
+
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <version>1.8</version>
+        <executions>
+          <execution>
+            <id>parse-version</id>
+            <goals>
+              <goal>parse-version</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
       <plugin>
         <artifactId>maven-source-plugin</artifactId>
         <version>2.2.1</version>
+        <!-- Eclipse-related OSGi manifests 
+             See https://github.com/netty/netty/issues/3886 
+             More information: http://rajakannappan.blogspot.ie/2010/03/automating-eclipse-source-bundle.html 
+        -->
         <configuration>
-          <!--
-            ~ Add generated MANIFEST.MF.
-            ~ See https://github.com/netty/netty/issues/2058
-          -->
-          <useDefaultManifestFile>true</useDefaultManifestFile>
+          <archive>
+            <manifestEntries>
+              <Bundle-ManifestVersion>2</Bundle-ManifestVersion>
+              <Bundle-Name>${name}</Bundle-Name>
+              <Bundle-SymbolicName>${groupId}.${artifactId}.source</Bundle-SymbolicName>
+              <Bundle-Vendor>${organization.name}</Bundle-Vendor>
+              <Bundle-Version>${parsedVersion.osgiVersion}</Bundle-Version>
+              <Eclipse-SourceBundle>${groupId}.${artifactId};version="${parsedVersion.osgiVersion}";roots:="."</Eclipse-SourceBundle>
+            </manifestEntries>
+          </archive>
         </configuration>
+
         <executions>
           <!--
             ~ This workaround prevents Maven from executing the 'generate-sources' phase twice.


Test patch: