【仅供内部供应商使用,不提供对外解答和培训】

Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

问题

插件开发中, 有时候我们会在内部使用一些第三方的 lib, 这些 lib 可能会与我们服务器中的 lib

...

相冲突。 从而导致插件无法继续运行的尴尬场面。


解决方案

 2019.07.03 后的版本中, plugin.xml 加入了 prefer-packages 属性,解决这个方法。

 2020.03.25 

...

后的版本中, prefer-packages 属性可以支持通配符 * ,方便设置批量加载

案例


Code Block
languagejava
linenumberstrue
<prefer-packages>
	<prefer-

...

package>com.

...

fr.harrison</prefer-package>
</prefer-packages>



之后,当加载到相关的类时, 比如 com.

...

fr.harrison.

...

test1.

...

 
则会避免双亲委派, 先从 plugin/classes 或者 plugin/lib

...

中读取类。
从而避免在插件内部使用一些类时与我们服务器中的 lib 冲突。

如果有多个可以使用多个子节点 prefer-package。


Code Block
languagejava
linenumberstrue
<prefer-packages>
	<prefer-package>com.fr.harrison</prefer-package>
	<prefer-package>com.fr.alex</prefer-package>
</prefer-packages>


通配符使用方式

Code Block
languagejava
linenumberstrue
<prefer-packages>
	<prefer-package>*</prefer-package>
	<prefer-package>com.fr.*</prefer-package>
	<prefer-package>com.fr.*.harrion.*</prefer-package>
</prefer-packages>