Hi, tien,

Err, I don't think the error message of duplicated class is a normal thing, 
could you upload a sample to reproduce it?

best regards,

Jason

> On Oct 25, 2019, at 19:15, Tien Dat PHAN <[email protected]> wrote:
> 
> Hi Jason,
> 
> Thanks for asking. Everything is working if we add this directly.
> And we understand your concern about having conflicting dependencies with our 
> application dependencies.
> And this is at the end a tradeoff between memory footprint optimization vs 
> software project management efficiency.
> 
> Our application does not need specifically com.esotericsoftware.kryo. This is 
> needed only by org.apache.dubbo:dubbo-serialization-kryo. And we really don't 
> like the fact that we need to repeat the dependency declaration on this 
> library, which is already defined by 
> org.apache.dubbo:dubbo-serialization-kryo, but got ignored. Moreover, if we 
> upgrade Dubbo version, we have to go check the new version of 
> com.esotericsoftware.kryo used by the new Dubbo, and update it accordingly.
> 
> At the end, I think we will accept the ERROR message on "Duplicate class". As 
> their is no win-win solution for this case.
> 
> Best regards 
> Dat
> 
> On 2019/10/25 10:47:32, Jason Joo <[email protected]> wrote: 
>> Tien,
>> 
>> It makes sense because it (and others like this) is an optional extension / 
>> support / function. We should decide to introduce the extra dependencies it 
>> requires when we enable it in configuration compared to the default. 
>> Another similar thing is that which driver you should introduce among 
>> zookeeper / nacos / redis / others depends which implementation of registry 
>> you want to use and actually config.
>> 
>> In most cases the version may not matter so much but you'd better to pick it 
>> carefully to match just or newer to the version dubbo uses by default.
>> 
>> So is everything going well now? After introducing the necessary 
>> dependencies?
>> 
>> best regards,
>> 
>> Jason
>> 
>>> On Oct 25, 2019, at 18:19, Tien Dat PHAN <[email protected]> wrote:
>>> 
>>> Hi Jason,
>>> 
>>> The org.apache.dubbo:dubbo-serialization-kryo, for example, needs 
>>> com.esotericsoftware.kryo.Kryo for Kryo serialization.
>>> 
>>> org.apache.dubbo:dubbo-serialization-kryo itself has it declared in pom.xml
>>> 
>>> But you do "unzip -Z dubbo-2.7.3.jar |awk '{print $9}' |grep kryo", you 
>>> don't see it included.
>>> And we have to declare it directly in our application pom.xml
>>> We believe that this is not relevant, since we have to update the version 
>>> of com.esotericsoftware.kryo according to 
>>> org.apache.dubbo:dubbo-serialization-kryo.
>>> 
>>> Best 
>>> Dat
>>> 
>>> On 2019/10/25 08:17:18, Jason Joo <[email protected]> wrote: 
>>>> Hi, tien
>>>> 
>>>> `dubbo` is a "fat" jar which includes all the classes you may possibly 
>>>> use. 
>>>> 
>>>> You can confirm it using "unzip" as shown below:
>>>> 
>>>> 
>>>> bogon:2.7.3 hblzxsj$ unzip -Z dubbo-2.7.3.jar |awk '{print $9}' |grep kryo
>>>> org/apache/dubbo/common/serialize/kryo/
>>>> org/apache/dubbo/common/serialize/kryo/KryoObjectInput.class
>>>> org/apache/dubbo/common/serialize/kryo/utils/
>>>> org/apache/dubbo/common/serialize/kryo/utils/AbstractKryoFactory.class
>>>> org/apache/dubbo/common/serialize/kryo/KryoSerialization.class
>>>> org/apache/dubbo/common/serialize/kryo/utils/PooledKryoFactory.class
>>>> META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/
>>>> META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/pom.properties
>>>> org/apache/dubbo/common/serialize/kryo/CompatibleKryo.class
>>>> org/apache/dubbo/common/serialize/kryo/utils/ThreadLocalKryoFactory$1.class
>>>> org/apache/dubbo/common/serialize/kryo/KryoObjectOutput.class
>>>> org/apache/dubbo/common/serialize/kryo/utils/PrototypeKryoFactory.class
>>>> org/apache/dubbo/common/serialize/kryo/utils/ReflectionUtils.class
>>>> org/apache/dubbo/common/serialize/kryo/utils/KryoUtils.class
>>>> org/apache/dubbo/common/serialize/kryo/utils/ThreadLocalKryoFactory.class
>>>> META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/pom.xml
>>>> 
>>>> 
>>>> 
>>>> best regards,
>>>> 
>>>> Jason
>>>> 
>>>>> On Oct 25, 2019, at 16:06, Tien Dat PHAN <[email protected]> wrote:
>>>>> 
>>>>> Hi Jason,
>>>>> 
>>>>> We found that is not enough.
>>>>> As you have pointed out the dependency on  
>>>>> `http://repo1.maven.org/maven2/org/apache/dubbo/`
>>>>> All dependencies wrapped by org.apache.dubbo:dubbo are marked as optional.
>>>>> This means on our application pom.xml, we have to declare the libraries 
>>>>> that we need directly, as they are not brought directly from 
>>>>> org.apache.dubbo:dubbo dependencies (check 
>>>>> `https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html`)
>>>>> 
>>>>> Best
>>>>> Dat
>>>>> 
>>>>> On 2019/10/25 01:48:29, Jason Joo <[email protected]> wrote: 
>>>>>> Hi, tien
>>>>>> 
>>>>>> There is a problem in your `dependencies` section.
>>>>>> `dubbo` is a single package including all codes related dubbo core like 
>>>>>> `netty-all` while `dubbo-serialization-kryo` is already included in 
>>>>>> `dubbo`.
>>>>>> 
>>>>>> If you want to do some customizing like removing some useless support in 
>>>>>> `dubbo` you could use another way to introduce the dependencies like: 
>>>>>> dubbo-common, dubbo-cluster and etc. .
>>>>>> 
>>>>>> Certainly it will be so complicated because there are so many packages 
>>>>>> to decide which are required to be introduced and you can see the full 
>>>>>> list in `http://repo1.maven.org/maven2/org/apache/dubbo/` 
>>>>>> <http://repo1.maven.org/maven2/org/apache/dubbo/%60>.
>>>>>> 
>>>>>> So generally we just introduce `dubbo` instead. That's already enough.
>>>>>> 
>>>>>> best regards,
>>>>>> 
>>>>>> Jason
>>>>>> 
>>>>>>> On Oct 25, 2019, at 00:31, Tien Dat PHAN <[email protected]> wrote:
>>>>>>> 
>>>>>>> the dubbo-common library as the suggestion with the help o
>>>>>> 
>>>>>> 
>>>> 
>>>> 
>> 
>> 

Reply via email to