Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

plugin.properties in 3.3.x #377

Closed
MacTrophy opened this issue May 26, 2020 · 25 comments
Closed

plugin.properties in 3.3.x #377

MacTrophy opened this issue May 26, 2020 · 25 comments
Labels

Comments

@MacTrophy
Copy link
Contributor

Has something changed between 3.2 and 3.3.1 that could have impacted the access to the plugin.properties at the root of JARs for the plugins? With the exact same JAR for my plugins using PF4J 3.2.0 everything works but for 3.3.0 and 3.3.1 I get lines such as

Lookup plugin descriptor in 'plugin.properties'
null

in debug verbosity level for all my plugins. This in turn makes the dependencies loading fail therefore only plugins with no dependencies will work.

@decebals
Copy link
Member

We can take a look on Changelog document to see if we can identify a change (commit) which can have an impact.
The perfect solution is to write a unit test (JUnit) that can reproduce your problem.

@MacTrophy
Copy link
Contributor Author

The changelog doesn't contain 3.3.1 ?

@decebals
Copy link
Member

The changelog doesn't contain 3.3.1 ?

I forgot to create a release entry for 3.3.1. It contains only a fix for a critical bug (#371).

@decebals
Copy link
Member

Can you create a test unit? I think that the correct place for this test is PropertiesPluginDescriptorFinderTest and you can use PluginJar to create the plugin jar in a dynamically mode.
This test will be excellent in the future as regression test.
In the mean time we can run the demo to see if we can reproduce the problem.

@decebals
Copy link
Member

In the mean time we can run the demo to see if we can reproduce the problem.

The demo application uses MANIFEST.MF as plugin descriptor container, so we need to extract the meta data about plugin from MANIFEST.MF into a new plugin.properties file.

@MacTrophy
Copy link
Contributor Author

I managed to clone the repo but the run-demo.sh fails? I have no clue on how to work with Maven.

[INFO] Reactor Summary for PF4J Parent 3.4.0-SNAPSHOT:
[INFO]
[INFO] PF4J Parent ........................................ SUCCESS [  1.256 s]
[INFO] PF4J ............................................... FAILURE [  0.743 s]
[INFO] Demo Parent ........................................ SKIPPED
[INFO] Demo Api ........................................... SKIPPED
[INFO] Demo App ........................................... SKIPPED
[INFO] Demo Plugins Parent ................................ SKIPPED
[INFO] Demo Plugin #1 ..................................... SKIPPED
[INFO] Demo Plugin #2 ..................................... SKIPPED
[INFO] Quickstart Archetype ............................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.268 s
[INFO] Finished at: 2020-05-26T14:48:07-04:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project pf4j: Fatal error compiling: invalid flag: --release -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <args> -rf :pf4j
cp: demo/app/target/pf4j-demo-*.zip: No such file or directory
cp: demo/plugins/plugin1/target/pf4j-demo-plugin1-*-all.jar: No such file or directory
cp: demo/plugins/plugin2/target/pf4j-demo-plugin2-*-all.jar: No such file or directory
java.io.FileNotFoundException: pf4j-demo-app-*.zip (No such file or directory)
	at java.io.FileInputStream.open0(Native Method)
	at java.io.FileInputStream.open(FileInputStream.java:195)
	at java.io.FileInputStream.<init>(FileInputStream.java:138)
	at java.io.FileInputStream.<init>(FileInputStream.java:93)
	at sun.tools.jar.Main.run(Main.java:307)
	at sun.tools.jar.Main.main(Main.java:1288)
rm: pf4j-demo-app-*.zip: No such file or directory
mv: rename pf4j-demo-app-*-SNAPSHOT.jar to pf4j-demo.jar: No such file or directory
Error: Unable to access jarfile pf4j-demo.jar

Why is it complaining about jar files?

@decebals
Copy link
Member

From log (Fatal error compiling: invalid flag: --release) I know were is the problem.
You need to use java 11 to build and run demo. It's a problem in maven script.
So, before to run demo (./run.sh) from the command line, make sure that java -version returns java 11.
Sorry for inconvenient.

@MacTrophy
Copy link
Contributor Author

Indeed it works with java 11. Now, I tried modifying one of the JARs to add the plugin.properties file but as soon as I run the demo the JAR is overwritten. Is this expected? I guess it's something Maven is doing automatically? How can I have a demo plugin using the plugin.properties instead the manifest.mf?

@decebals
Copy link
Member

decebals commented May 27, 2020

Indeed it works with java 11

Good.

I tried modifying one of the JARs to add the plugin.properties file but as soon as I run the demo the JAR is overwritten.

So, after running the demo for the first time (via run.sh script) a demo-dist directory is created.
The created directory has the following layout:

~/work/pf4j/demo-dist
$ tree
.
├── lib
│   ├── commons-lang-2.4.jar
│   ├── java-semver-0.9.0.jar
│   ├── log4j-api-2.13.1.jar
│   ├── log4j-core-2.13.1.jar
│   ├── log4j-slf4j-impl-2.13.1.jar
│   ├── pf4j-3.4.0-SNAPSHOT.jar
│   ├── pf4j-demo-api-3.4.0-SNAPSHOT.jar
│   └── slf4j-api-1.7.25.jar
├── pf4j-demo.jar
└── plugins
    ├── disabled.txt
    ├── enabled.txt
    ├── pf4j-demo-plugin1-3.4.0-SNAPSHOT-all.jar
    └── pf4j-demo-plugin2-3.4.0-SNAPSHOT-all.jar

2 directories, 13 files

Now, to avoid overwriting of the plugins JAR files is enough to start demo using:

java -jar pf4j-demo.jar

How can I have a demo plugin using the plugin.properties instead the manifest.mf?

Edit each plugin JAR:

  • add the plugin.properties file from the root of each plugin in the root of the JAR file
  • remove all lines that start with Plugin from META-INF/MANIFEST.MF file of each plugin

@MacTrophy
Copy link
Contributor Author

MacTrophy commented May 27, 2020

Thank you for the details, I feel like a newbie but I guess it's because all my projects are managed and fully automated through Gradle and I've never used Maven.

I successfully followed your instructions, edited the JAR to add the plugin.properties and removed the Plugin lines in the manifest. I've tested on Mac OS X both 1.8.0_121 and 11.0.5 and it works. Under Windows 10 with Java 13.0.1 (and the exact same demo-dist that I copied) it fails as it doesn't find the plugin.properties nor the details in the manifest.

Could it be a bug specifically under Windows ? I will try installing Java 13 on my Mac and re-run with it.

Edit : Ok it was faster than I thought installing JDK 13. Tested with 13.0.2 on my Mac and it works. It also works on Mac with AdoptOpenJDK 14.0.1.

Is there something more to do about this? I guess an automated test would be useful but it seems it would have to be ran on Windows to reveal the problem.

@decebals
Copy link
Member

@MacTrophy
From what you say, the conclusion is that the issue appears only on Windows platform.
My machine is a Linux one. I will try to run the demo on an windows machine.
Do you see any error in console (log file)? It's interesting if you can run demo in debug mode and use a debugger from an IDE (Idea, Eclipse) to see what is wrong.

@MacTrophy
Copy link
Contributor Author

At the present I am missing time to setup a debugging environment and/or to do remote debugging for the demo. Have you been able to try it on your Window machine?

Here is the complete output of the demo on Windows, there is an error but I guess its expected as the manifest doesn't contain any plugin description.

########################################
               PF4J-DEMO
########################################
2020-05-28 15:41:50,449 INFO org.pf4j.DefaultPluginStatusProvider - Enabled plugins: []
2020-05-28 15:41:50,449 INFO org.pf4j.DefaultPluginStatusProvider - Disabled plugins: []
2020-05-28 15:41:50,449 INFO org.pf4j.DefaultPluginManager - PF4J version 3.3.1 in 'deployment' mode
2020-05-28 15:41:50,463 DEBUG org.pf4j.AbstractPluginManager - Lookup plugins in 'plugins'
2020-05-28 15:41:50,463 DEBUG org.pf4j.AbstractPluginManager - Found 2 possible plugins: [plugins\pf4j-demo-plugin1-3.3.1-all.jar, plugins\pf4j-demo-plugin2-3.3.1-all.jar]
2020-05-28 15:41:50,463 DEBUG org.pf4j.AbstractPluginManager - Use 'org.pf4j.CompoundPluginDescriptorFinder@6bdf28bb' to find plugins descriptors
2020-05-28 15:41:50,463 DEBUG org.pf4j.AbstractPluginManager - Finding plugin descriptor for plugin 'plugins\pf4j-demo-plugin1-3.3.1-all.jar'
2020-05-28 15:41:50,463 DEBUG org.pf4j.CompoundPluginDescriptorFinder - 'org.pf4j.PropertiesPluginDescriptorFinder@6b71769e' is applicable for plugin 'plugins\pf4j-demo-plugin1-3.3.1-all.jar'
2020-05-28 15:41:50,509 DEBUG org.pf4j.PropertiesPluginDescriptorFinder - Lookup plugin descriptor in 'plugin.properties'
2020-05-28 15:41:50,509 DEBUG org.pf4j.CompoundPluginDescriptorFinder -
2020-05-28 15:41:50,509 DEBUG org.pf4j.CompoundPluginDescriptorFinder - Try to continue with the next finder
2020-05-28 15:41:50,509 DEBUG org.pf4j.CompoundPluginDescriptorFinder - 'org.pf4j.ManifestPluginDescriptorFinder@6aaa5eb0' is applicable for plugin 'plugins\pf4j-demo-plugin1-3.3.1-all.jar'
2020-05-28 15:41:50,509 ERROR org.pf4j.AbstractPluginManager - Field 'id' cannot be empty
org.pf4j.PluginRuntimeException: Field 'id' cannot be empty
        at org.pf4j.AbstractPluginManager.validatePluginDescriptor(AbstractPluginManager.java:877)
        at org.pf4j.AbstractPluginManager.loadPluginFromPath(AbstractPluginManager.java:799)
        at org.pf4j.DefaultPluginManager.loadPluginFromPath(DefaultPluginManager.java:130)
        at org.pf4j.AbstractPluginManager.loadPlugins(AbstractPluginManager.java:224)
        at org.pf4j.demo.Boot.main(Boot.java:53)
2020-05-28 15:41:50,509 DEBUG org.pf4j.AbstractPluginManager - Use 'org.pf4j.CompoundPluginDescriptorFinder@6bdf28bb' to find plugins descriptors
2020-05-28 15:41:50,509 DEBUG org.pf4j.AbstractPluginManager - Finding plugin descriptor for plugin 'plugins\pf4j-demo-plugin2-3.3.1-all.jar'
2020-05-28 15:41:50,509 DEBUG org.pf4j.CompoundPluginDescriptorFinder - 'org.pf4j.PropertiesPluginDescriptorFinder@6b71769e' is applicable for plugin 'plugins\pf4j-demo-plugin2-3.3.1-all.jar'
2020-05-28 15:41:50,524 DEBUG org.pf4j.PropertiesPluginDescriptorFinder - Lookup plugin descriptor in 'plugin.properties'
2020-05-28 15:41:50,524 DEBUG org.pf4j.CompoundPluginDescriptorFinder -
2020-05-28 15:41:50,524 DEBUG org.pf4j.CompoundPluginDescriptorFinder - Try to continue with the next finder
2020-05-28 15:41:50,524 DEBUG org.pf4j.CompoundPluginDescriptorFinder - 'org.pf4j.ManifestPluginDescriptorFinder@6aaa5eb0' is applicable for plugin 'plugins\pf4j-demo-plugin2-3.3.1-all.jar'
2020-05-28 15:41:50,524 DEBUG org.pf4j.AbstractPluginManager - Found descriptor PluginDescriptor [pluginId=hello-plugin, pluginClass=org.pf4j.demo.hello.HelloPlugin, version=0.0.1, provider=Decebal Suiu, dependencies=[], description=, requires=*, license=null]
2020-05-28 15:41:50,524 DEBUG org.pf4j.AbstractPluginManager - Class 'org.pf4j.demo.hello.HelloPlugin' for plugin 'plugins\pf4j-demo-plugin2-3.3.1-all.jar'
2020-05-28 15:41:50,524 DEBUG org.pf4j.AbstractPluginManager - Loading plugin 'plugins\pf4j-demo-plugin2-3.3.1-all.jar'
2020-05-28 15:41:50,524 DEBUG org.pf4j.CompoundPluginLoader - 'org.pf4j.JarPluginLoader@180bc464' is applicable for plugin 'plugins\pf4j-demo-plugin2-3.3.1-all.jar'
2020-05-28 15:41:50,524 DEBUG org.pf4j.PluginClassLoader - Add 'file:/C:/Users/Dominique%20Gibeau/Desktop/demo-dist/plugins/pf4j-demo-plugin2-3.3.1-all.jar'
2020-05-28 15:41:50,524 DEBUG org.pf4j.AbstractPluginManager - Loaded plugin 'plugins\pf4j-demo-plugin2-3.3.1-all.jar' with class loader 'org.pf4j.PluginClassLoader@5315b42e'
2020-05-28 15:41:50,524 DEBUG org.pf4j.AbstractPluginManager - Creating wrapper for plugin 'plugins\pf4j-demo-plugin2-3.3.1-all.jar'
2020-05-28 15:41:50,540 DEBUG org.pf4j.AbstractPluginManager - Created wrapper 'PluginWrapper [descriptor=PluginDescriptor [pluginId=hello-plugin, pluginClass=org.pf4j.demo.hello.HelloPlugin, version=0.0.1, provider=Decebal Suiu, dependencies=[], description=, requires=*, license=null], pluginPath=plugins\pf4j-demo-plugin2-3.3.1-all.jar]' for plugin 'plugins\pf4j-demo-plugin2-3.3.1-all.jar'
2020-05-28 15:41:50,540 DEBUG org.pf4j.DependencyResolver - Graph:
   hello-plugin -> []
2020-05-28 15:41:50,540 DEBUG org.pf4j.DependencyResolver - Plugins order: [hello-plugin]
2020-05-28 15:41:50,540 INFO org.pf4j.AbstractPluginManager - Plugin 'hello-plugin@0.0.1' resolved
2020-05-28 15:41:50,540 INFO org.pf4j.AbstractPluginManager - Start plugin 'hello-plugin@0.0.1'
2020-05-28 15:41:50,540 DEBUG org.pf4j.DefaultPluginFactory - Create instance for plugin 'org.pf4j.demo.hello.HelloPlugin'
HelloPlugin.start()
2020-05-28 15:41:50,570 DEBUG org.pf4j.AbstractExtensionFinder - Finding extensions of extension point 'org.pf4j.demo.api.Greeting'
2020-05-28 15:41:50,570 DEBUG org.pf4j.LegacyExtensionFinder - Reading extensions storages from classpath
2020-05-28 15:41:50,570 DEBUG org.pf4j.LegacyExtensionFinder - Read 'file:/C:/Users/Dominique%20Gibeau/Desktop/demo-dist/pf4j-demo-app-3.3.1.jar!/META-INF/extensions.idx'
2020-05-28 15:41:50,570 DEBUG org.pf4j.LegacyExtensionFinder - Read 'file:/C:/Users/Dominique%20Gibeau/Desktop/demo-dist/lib/pf4j-demo-api-3.3.1.jar!/META-INF/extensions.idx'
2020-05-28 15:41:50,570 DEBUG org.pf4j.AbstractExtensionFinder - Found possible 1 extensions:
2020-05-28 15:41:50,570 DEBUG org.pf4j.AbstractExtensionFinder -    org.pf4j.demo.WhazzupGreeting
2020-05-28 15:41:50,570 DEBUG org.pf4j.LegacyExtensionFinder - Reading extensions storages from plugins
2020-05-28 15:41:50,570 DEBUG org.pf4j.LegacyExtensionFinder - Reading extensions storage from plugin 'hello-plugin'
2020-05-28 15:41:50,570 DEBUG org.pf4j.LegacyExtensionFinder - Read 'META-INF/extensions.idx'
2020-05-28 15:41:50,570 DEBUG org.pf4j.AbstractExtensionFinder - Found possible 1 extensions:
2020-05-28 15:41:50,570 DEBUG org.pf4j.AbstractExtensionFinder -    org.pf4j.demo.hello.HelloPlugin$HelloGreeting
2020-05-28 15:41:50,570 DEBUG org.pf4j.AbstractExtensionFinder - Finding extensions of extension point 'org.pf4j.demo.api.Greeting' for plugin 'null'
2020-05-28 15:41:50,570 DEBUG org.pf4j.AbstractExtensionFinder - Loading class 'org.pf4j.demo.WhazzupGreeting' using class loader 'jdk.internal.loader.ClassLoaders$AppClassLoader@28ba21f3'
2020-05-28 15:41:50,570 DEBUG org.pf4j.AbstractExtensionFinder - Checking extension type 'org.pf4j.demo.WhazzupGreeting'
2020-05-28 15:41:50,586 DEBUG org.pf4j.AbstractExtensionFinder - Added extension 'org.pf4j.demo.WhazzupGreeting' with ordinal 0
2020-05-28 15:41:50,586 DEBUG org.pf4j.AbstractExtensionFinder - Found 1 extensions for extension point 'org.pf4j.demo.api.Greeting'
2020-05-28 15:41:50,602 DEBUG org.pf4j.AbstractExtensionFinder - Finding extensions of extension point 'org.pf4j.demo.api.Greeting' for plugin 'hello-plugin'
2020-05-28 15:41:50,602 DEBUG org.pf4j.AbstractExtensionFinder - Loading class 'org.pf4j.demo.hello.HelloPlugin$HelloGreeting' using class loader 'org.pf4j.PluginClassLoader@5315b42e'
2020-05-28 15:41:50,602 DEBUG org.pf4j.AbstractExtensionFinder - Checking extension type 'org.pf4j.demo.hello.HelloPlugin$HelloGreeting'
2020-05-28 15:41:50,602 DEBUG org.pf4j.AbstractExtensionFinder - Added extension 'org.pf4j.demo.hello.HelloPlugin$HelloGreeting' with ordinal 1
2020-05-28 15:41:50,602 DEBUG org.pf4j.AbstractExtensionFinder - Found 1 extensions for extension point 'org.pf4j.demo.api.Greeting'
2020-05-28 15:41:50,602 DEBUG org.pf4j.AbstractExtensionFinder - Found 2 extensions for extension point 'org.pf4j.demo.api.Greeting'
2020-05-28 15:41:50,602 DEBUG org.pf4j.AbstractExtensionFinder - Finding extensions of extension point 'org.pf4j.demo.api.Greeting'
2020-05-28 15:41:50,602 DEBUG org.pf4j.ServiceProviderExtensionFinder - Reading extensions storages from classpath
2020-05-28 15:41:50,602 DEBUG org.pf4j.ServiceProviderExtensionFinder - Read 'file:/C:/Users/Dominique%20Gibeau/Desktop/demo-dist/pf4j-demo-app-3.3.1.jar!/META-INF/services'
Exception in thread "main" java.nio.file.ClosedFileSystemException
        at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.ensureOpen(Unknown Source)
        at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.getFileAttributes(Unknown Source)
        at jdk.zipfs/jdk.nio.zipfs.ZipPath.readAttributes(Unknown Source)
        at jdk.zipfs/jdk.nio.zipfs.ZipPath.readAttributes(Unknown Source)
        at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.readAttributes(Unknown Source)
        at java.base/java.nio.file.Files.readAttributes(Unknown Source)
        at java.base/java.nio.file.FileTreeWalker.getAttributes(Unknown Source)
        at java.base/java.nio.file.FileTreeWalker.visit(Unknown Source)
        at java.base/java.nio.file.FileTreeWalker.walk(Unknown Source)
        at java.base/java.nio.file.Files.walkFileTree(Unknown Source)
        at org.pf4j.ServiceProviderExtensionFinder.readExtensions(ServiceProviderExtensionFinder.java:135)
        at org.pf4j.ServiceProviderExtensionFinder.collectExtensions(ServiceProviderExtensionFinder.java:130)
        at org.pf4j.ServiceProviderExtensionFinder.collectExtensions(ServiceProviderExtensionFinder.java:118)
        at org.pf4j.ServiceProviderExtensionFinder.readClasspathStorages(ServiceProviderExtensionFinder.java:69)
        at org.pf4j.AbstractExtensionFinder.readStorages(AbstractExtensionFinder.java:301)
        at org.pf4j.AbstractExtensionFinder.getEntries(AbstractExtensionFinder.java:309)
        at org.pf4j.AbstractExtensionFinder.find(AbstractExtensionFinder.java:56)
        at org.pf4j.DefaultExtensionFinder.find(DefaultExtensionFinder.java:45)
        at org.pf4j.AbstractPluginManager.getExtensions(AbstractPluginManager.java:550)
        at org.pf4j.demo.Boot.main(Boot.java:62)

@decebals
Copy link
Member

decebals commented May 30, 2020

Something is not good in the log supplied by you.
I don't like following lines:

2020-05-28 15:41:50,509 DEBUG org.pf4j.CompoundPluginDescriptorFinder -
2020-05-28 15:41:50,509 DEBUG org.pf4j.CompoundPluginDescriptorFinder - Try to continue with the next finder
2020-05-28 15:41:50,509 DEBUG org.pf4j.CompoundPluginDescriptorFinder - 'org.pf4j.ManifestPluginDescriptorFinder@6aaa5eb0' is applicable for plugin 'plugins\pf4j-demo-plugin1-3.3.1-all.jar'
2020-05-28 15:41:50,509 ERROR org.pf4j.AbstractPluginManager - Field 'id' cannot be empty
org.pf4j.PluginRuntimeException: Field 'id' cannot be empty
        at org.pf4j.AbstractPluginManager.validatePluginDescriptor(AbstractPluginManager.java:877)
        at org.pf4j.AbstractPluginManager.loadPluginFromPath(AbstractPluginManager.java:799)

I tested on my dev machine (Ubuntu) and everything works as expected using manifest and properties file for plugin descriptor.

By default the demo uses a CompoundPluginDescriptorFinder (PropertiesPluginDescriptorFinder + ManifestPluginDescriptorFinder) so, it should find both the plugins that use plugin.properties and plugins that use MANIFEST.MF.
By default, the plugins in demo use MANIFEST.MF that looks like:

Manifest-Version: 1.0
Created-By: Apache Maven 3.5.0
Built-By: decebal
Build-Jdk: 11.0.1
Specification-Title: Demo Plugin #1
Specification-Version: 3.4
Implementation-Title: Demo Plugin #1
Implementation-Version: 3.4.0-SNAPSHOT
Implementation-Vendor-Id: org.pf4j.demo
Implementation-URL: http://nexus.sonatype.org/oss-repository-hosting.htm
 l/pf4j-parent/pf4j-demo-parent/pf4j-demo-plugins/pf4j-demo-plugin1
Plugin-Class: org.pf4j.demo.welcome.WelcomePlugin
Plugin-Dependencies: 
Plugin-Id: welcome-plugin
Plugin-Provider: Decebal Suiu
Plugin-Version: 0.0.1

If I run demo without any modification then in log you have something like:

2020-05-30 11:16:07,761 DEBUG org.pf4j.AbstractPluginManager - Use 'org.pf4j.CompoundPluginDescriptorFinder@55040f2f' to find plugins descriptors
2020-05-30 11:16:07,761 DEBUG org.pf4j.AbstractPluginManager - Finding plugin descriptor for plugin 'plugins/pf4j-demo-plugin2-3.4.0-SNAPSHOT-all.jar'
2020-05-30 11:16:07,761 DEBUG org.pf4j.CompoundPluginDescriptorFinder - 'org.pf4j.PropertiesPluginDescriptorFinder@64c87930' is applicable for plugin 'plugins/pf4j-demo-plugin2-3.4.0-SNAPSHOT-all.jar'
2020-05-30 11:16:07,770 DEBUG org.pf4j.PropertiesPluginDescriptorFinder - Lookup plugin descriptor in 'plugin.properties'
2020-05-30 11:16:07,770 DEBUG org.pf4j.CompoundPluginDescriptorFinder - Cannot find 'plugin.properties' path
2020-05-30 11:16:07,770 DEBUG org.pf4j.CompoundPluginDescriptorFinder - Try to continue with the next finder
2020-05-30 11:16:07,770 DEBUG org.pf4j.CompoundPluginDescriptorFinder - 'org.pf4j.ManifestPluginDescriptorFinder@5d740a0f' is applicable for plugin 'plugins/pf4j-demo-plugin2-3.4.0-SNAPSHOT-all.jar'
2020-05-30 11:16:07,771 DEBUG org.pf4j.AbstractPluginManager - Found descriptor PluginDescriptor [pluginId=hello-plugin, pluginClass=org.pf4j.demo.hello.HelloPlugin, version=0.0.1, provider=Decebal Suiu, dependencies=[], description=, requires=*, license=null]
2020-05-30 11:16:07,771 DEBUG org.pf4j.AbstractPluginManager - Class 'org.pf4j.demo.hello.HelloPlugin' for plugin 'plugins/pf4j-demo-plugin2-3.4.0-SNAPSHOT-all.jar'
2020-05-30 11:16:07,771 DEBUG org.pf4j.AbstractPluginManager - Loading plugin 'plugins/pf4j-demo-plugin2-3.4.0-SNAPSHOT-all.jar'

In this scenario, it's clear that PropertiesPluginDescriptorFinder is skipped (plugin.properties is not found) and ManifestPluginDescriptorFinder is used.

Now it's time to switch from MANIFEST.MF plugin based to plugin.properties plugin based, to replicate our problem.
First of all we need to edit the plugin jar file and remove all attributes that start with Plugin from MANIFEST.MF

Plugin-Class: org.pf4j.demo.welcome.WelcomePlugin
Plugin-Dependencies: 
Plugin-Id: welcome-plugin
Plugin-Provider: Decebal Suiu
Plugin-Version: 0.0.1

The next step is to add plugin.properties file in the ROOT of the plugin jar file. The content of plugin.properties in this case is:

plugin.id=welcome-plugin
plugin.class=org.pf4j.demo.welcome.WelcomePlugin
plugin.version=0.0.1
plugin.provider=Decebal Suiu
plugin.dependencies=

Now, if we run the demo, then in log you have something like:

2020-05-30 11:21:06,031 DEBUG org.pf4j.AbstractPluginManager - Use 'org.pf4j.CompoundPluginDescriptorFinder@55040f2f' to find plugins descriptors
2020-05-30 11:21:06,032 DEBUG org.pf4j.AbstractPluginManager - Finding plugin descriptor for plugin 'plugins/pf4j-demo-plugin2-3.4.0-SNAPSHOT-all.jar'
2020-05-30 11:21:06,032 DEBUG org.pf4j.CompoundPluginDescriptorFinder - 'org.pf4j.PropertiesPluginDescriptorFinder@64c87930' is applicable for plugin 'plugins/pf4j-demo-plugin2-3.4.0-SNAPSHOT-all.jar'
2020-05-30 11:21:06,040 DEBUG org.pf4j.PropertiesPluginDescriptorFinder - Lookup plugin descriptor in 'plugin.properties'
2020-05-30 11:21:06,042 DEBUG org.pf4j.AbstractPluginManager - Found descriptor PluginDescriptor [pluginId=hello-plugin, pluginClass=org.pf4j.demo.hello.HelloPlugin, version=0.0.1, provider=Decebal Suiu, dependencies=[], description=, requires=*, license=null]
2020-05-30 11:21:06,042 DEBUG org.pf4j.AbstractPluginManager - Class 'org.pf4j.demo.hello.HelloPlugin' for plugin 'plugins/pf4j-demo-plugin2-3.4.0-SNAPSHOT-all.jar'
2020-05-30 11:21:06,042 DEBUG org.pf4j.AbstractPluginManager - Loading plugin 'plugins/pf4j-demo-plugin2-3.4.0-SNAPSHOT-all.jar'

In this scenario is clear that plugin.properties is found and PropertiesPluginDescriptorFinder is used.

That is all.

@decebals
Copy link
Member

decebals commented Jul 6, 2020

@MacTrophy What is the status of this issue? Do you need more information?

@MacTrophy
Copy link
Contributor Author

I've been over my head with other projects recently, I've locked my projects on 3.2. I will retry this as soon as I can and let you know, should be able to do this this week.

Otherwise have you been able to try yourself on Windows? On Linux and MacOS X everything works properly, I only had the issues on Windows.

Thank you

@MacTrophy
Copy link
Contributor Author

@decebals I've been trying to get PF4J setup in Eclipse to try to debug the demo but I can't manage to get it working. I have really limited experience with git and no experience at all with Maven, do you have instructions on how to get the project up and running? Are you running it in Eclipse? Currently all projects have dependencies issues, most of them even fail to find the classes in org.pf4j package but the build path seems correct. I've found https://pf4j.org/dev/how-to-build.html but this page doesn't feel complete or up-to-date, is the JDK dependency really JDK 7?

Even running straight in command line with "mvn" it doesn't work it fails whether I try with JDK 7, 8 and 14.

My plan was to get the demo working within Eclipse on my Mac then install and debug in Eclipse on Windows but for now I can't compile the project, I'm a bit stuck.

Have you had the chance to try the demo on Windows? I've tried again, on MacOS X I get results according to what you explained on 2020-05-30 but on Windows I get the result I had on 2020-05-28. I verified and my plugin doesn't have anything plugin-related in the manifest and the plugin.properties is at the root of the plugin's JAR with required config as it would work with 3.2.

@decebals
Copy link
Member

decebals commented Jul 8, 2020

@MacTrophy

I was able to reproduce you problem on Windows.
The entire log is:

$ java -jar pf4j-demo.jar
########################################
               PF4J-DEMO
########################################
2020-07-06 18:41:28,332 INFO org.pf4j.DefaultPluginStatusProvider - Enabled plugins: []
2020-07-06 18:41:28,334 INFO org.pf4j.DefaultPluginStatusProvider - Disabled plugins: []
2020-07-06 18:41:28,337 INFO org.pf4j.DefaultPluginManager - PF4J version 3.4.0-SNAPSHOT in 'deployment' mode
2020-07-06 18:41:28,337 DEBUG org.pf4j.AbstractPluginManager - Lookup plugins in 'plugins'
2020-07-06 18:41:28,341 DEBUG org.pf4j.AbstractPluginManager - Found 2 possible plugins: [plugins\pf4j-demo-plugin2-3.4.0-SNAPSHOT-all.jar, plugins\pf4j-demo-plugin1-3.4.0-SNAPSHOT-all.jar]
2020-07-06 18:41:28,341 DEBUG org.pf4j.AbstractPluginManager - Use 'org.pf4j.CompoundPluginDescriptorFinder@ca263c2' to find plugins descriptors
2020-07-06 18:41:28,341 DEBUG org.pf4j.AbstractPluginManager - Finding plugin descriptor for plugin 'plugins\pf4j-demo-plugin2-3.4.0-SNAPSHOT-all.jar'
2020-07-06 18:41:28,342 DEBUG org.pf4j.CompoundPluginDescriptorFinder - 'org.pf4j.PropertiesPluginDescriptorFinder@589b3632' is applicable for plugin 'plugins\pf4j-demo-plugin2-3.4.0-SNAPSHOT-all.jar'
2020-07-06 18:41:28,354 DEBUG org.pf4j.PropertiesPluginDescriptorFinder - Lookup plugin descriptor in 'plugin.properties'
2020-07-06 18:41:28,354 DEBUG org.pf4j.CompoundPluginDescriptorFinder - null
2020-07-06 18:41:28,354 DEBUG org.pf4j.CompoundPluginDescriptorFinder - Try to continue with the next finder
2020-07-06 18:41:28,354 DEBUG org.pf4j.CompoundPluginDescriptorFinder - 'org.pf4j.ManifestPluginDescriptorFinder@5af97850' is applicable for plugin 'plugins\pf4j-demo-plugin2-3.4.0-SNAPSHOT-all.jar'
2020-07-06 18:41:28,355 ERROR org.pf4j.AbstractPluginManager - Field 'id' cannot be empty
org.pf4j.PluginRuntimeException: Field 'id' cannot be empty
        at org.pf4j.AbstractPluginManager.validatePluginDescriptor(AbstractPluginManager.java:877) ~[pf4j-3.4.0-SNAPSHOT.jar:3.4.0-SNAPSHOT]
        at org.pf4j.AbstractPluginManager.loadPluginFromPath(AbstractPluginManager.java:799) ~[pf4j-3.4.0-SNAPSHOT.jar:3.4.0-SNAPSHOT]
        at org.pf4j.DefaultPluginManager.loadPluginFromPath(DefaultPluginManager.java:130) ~[pf4j-3.4.0-SNAPSHOT.jar:3.4.0-SNAPSHOT]
        at org.pf4j.AbstractPluginManager.loadPlugins(AbstractPluginManager.java:224) [pf4j-3.4.0-SNAPSHOT.jar:3.4.0-SNAPSHOT]
        at org.pf4j.demo.Boot.main(Boot.java:53) [pf4j-demo.jar:3.4.0-SNAPSHOT]
2020-07-06 18:41:28,358 DEBUG org.pf4j.AbstractPluginManager - Use 'org.pf4j.CompoundPluginDescriptorFinder@ca263c2' to find plugins descriptors
2020-07-06 18:41:28,358 DEBUG org.pf4j.AbstractPluginManager - Finding plugin descriptor for plugin 'plugins\pf4j-demo-plugin1-3.4.0-SNAPSHOT-all.jar'
2020-07-06 18:41:28,358 DEBUG org.pf4j.CompoundPluginDescriptorFinder - 'org.pf4j.PropertiesPluginDescriptorFinder@589b3632' is applicable for plugin 'plugins\pf4j-demo-plugin1-3.4.0-SNAPSHOT-all.jar'
2020-07-06 18:41:28,361 DEBUG org.pf4j.PropertiesPluginDescriptorFinder - Lookup plugin descriptor in 'plugin.properties'
2020-07-06 18:41:28,361 DEBUG org.pf4j.CompoundPluginDescriptorFinder - null
2020-07-06 18:41:28,361 DEBUG org.pf4j.CompoundPluginDescriptorFinder - Try to continue with the next finder
2020-07-06 18:41:28,361 DEBUG org.pf4j.CompoundPluginDescriptorFinder - 'org.pf4j.ManifestPluginDescriptorFinder@5af97850' is applicable for plugin 'plugins\pf4j-demo-plugin1-3.4.0-SNAPSHOT-all.jar'
2020-07-06 18:41:28,361 ERROR org.pf4j.AbstractPluginManager - Field 'id' cannot be empty
org.pf4j.PluginRuntimeException: Field 'id' cannot be empty
        at org.pf4j.AbstractPluginManager.validatePluginDescriptor(AbstractPluginManager.java:877) ~[pf4j-3.4.0-SNAPSHOT.jar:3.4.0-SNAPSHOT]
        at org.pf4j.AbstractPluginManager.loadPluginFromPath(AbstractPluginManager.java:799) ~[pf4j-3.4.0-SNAPSHOT.jar:3.4.0-SNAPSHOT]
        at org.pf4j.DefaultPluginManager.loadPluginFromPath(DefaultPluginManager.java:130) ~[pf4j-3.4.0-SNAPSHOT.jar:3.4.0-SNAPSHOT]
        at org.pf4j.AbstractPluginManager.loadPlugins(AbstractPluginManager.java:224) [pf4j-3.4.0-SNAPSHOT.jar:3.4.0-SNAPSHOT]
        at org.pf4j.demo.Boot.main(Boot.java:53) [pf4j-demo.jar:3.4.0-SNAPSHOT]
2020-07-06 18:41:28,362 DEBUG org.pf4j.DependencyResolver - Graph:
2020-07-06 18:41:28,362 DEBUG org.pf4j.DependencyResolver - Plugins order: []
2020-07-06 18:41:28,363 DEBUG org.pf4j.AbstractExtensionFinder - Finding extensions of extension point 'org.pf4j.demo.api.Greeting'
2020-07-06 18:41:28,363 DEBUG org.pf4j.LegacyExtensionFinder - Reading extensions storages from classpath
2020-07-06 18:41:28,363 DEBUG org.pf4j.LegacyExtensionFinder - Read 'file:/D:/pf4j-demo-dist/pf4j-demo.jar!/META-INF/extensions.idx'
2020-07-06 18:41:28,364 DEBUG org.pf4j.LegacyExtensionFinder - Read 'file:/D:/pf4j-demo-dist/lib/pf4j-demo-api-3.4.0-SNAPSHOT.jar!/META-INF/extensions.idx'
2020-07-06 18:41:28,364 DEBUG org.pf4j.AbstractExtensionFinder - Found possible 1 extensions:
2020-07-06 18:41:28,364 DEBUG org.pf4j.AbstractExtensionFinder -    org.pf4j.demo.WhazzupGreeting
2020-07-06 18:41:28,364 DEBUG org.pf4j.LegacyExtensionFinder - Reading extensions storages from plugins
2020-07-06 18:41:28,364 DEBUG org.pf4j.AbstractExtensionFinder - Finding extensions of extension point 'org.pf4j.demo.api.Greeting' for plugin 'null'
2020-07-06 18:41:28,365 DEBUG org.pf4j.AbstractExtensionFinder - Loading class 'org.pf4j.demo.WhazzupGreeting' using class loader 'sun.misc.Launcher$AppClassLoader@55f96302'
2020-07-06 18:41:28,365 DEBUG org.pf4j.AbstractExtensionFinder - Checking extension type 'org.pf4j.demo.WhazzupGreeting'
2020-07-06 18:41:28,367 DEBUG org.pf4j.AbstractExtensionFinder - Added extension 'org.pf4j.demo.WhazzupGreeting' with ordinal 0
2020-07-06 18:41:28,367 DEBUG org.pf4j.AbstractExtensionFinder - Found 1 extensions for extension point 'org.pf4j.demo.api.Greeting'
2020-07-06 18:41:28,367 DEBUG org.pf4j.AbstractExtensionFinder - Found 1 extensions for extension point 'org.pf4j.demo.api.Greeting'
2020-07-06 18:41:28,367 DEBUG org.pf4j.AbstractExtensionFinder - Finding extensions of extension point 'org.pf4j.demo.api.Greeting'
2020-07-06 18:41:28,367 DEBUG org.pf4j.ServiceProviderExtensionFinder - Reading extensions storages from classpath
2020-07-06 18:41:28,367 DEBUG org.pf4j.ServiceProviderExtensionFinder - Read 'file:/D:/pf4j-demo-dist/pf4j-demo.jar!/META-INF/services'
Exception in thread "main" java.nio.file.ClosedFileSystemException
        at com.sun.nio.zipfs.ZipFileSystem.ensureOpen(ZipFileSystem.java:1084)
        at com.sun.nio.zipfs.ZipFileSystem.getFileAttributes(ZipFileSystem.java:316)
        at com.sun.nio.zipfs.ZipPath.getAttributes(ZipPath.java:664)
        at com.sun.nio.zipfs.ZipFileSystemProvider.readAttributes(ZipFileSystemProvider.java:294)
        at java.nio.file.Files.readAttributes(Files.java:1737)
        at java.nio.file.FileTreeWalker.getAttributes(FileTreeWalker.java:219)
        at java.nio.file.FileTreeWalker.visit(FileTreeWalker.java:276)
        at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:322)
        at java.nio.file.Files.walkFileTree(Files.java:2662)
        at org.pf4j.ServiceProviderExtensionFinder.readExtensions(ServiceProviderExtensionFinder.java:135)
        at org.pf4j.ServiceProviderExtensionFinder.collectExtensions(ServiceProviderExtensionFinder.java:130)
        at org.pf4j.ServiceProviderExtensionFinder.collectExtensions(ServiceProviderExtensionFinder.java:118)
        at org.pf4j.ServiceProviderExtensionFinder.readClasspathStorages(ServiceProviderExtensionFinder.java:69)
        at org.pf4j.AbstractExtensionFinder.readStorages(AbstractExtensionFinder.java:301)
        at org.pf4j.AbstractExtensionFinder.getEntries(AbstractExtensionFinder.java:309)
        at org.pf4j.AbstractExtensionFinder.find(AbstractExtensionFinder.java:56)
        at org.pf4j.DefaultExtensionFinder.find(DefaultExtensionFinder.java:45)
        at org.pf4j.AbstractPluginManager.getExtensions(AbstractPluginManager.java:550)
        at org.pf4j.demo.Boot.main(Boot.java:62)

I attached the test program (see below zip file)
pf4j-demo-dist.zip

@valkuc
Copy link
Contributor

valkuc commented Jul 17, 2020

The cause of this issue is a method org.pf4j.util.FileUtils#getPath(java.net.URI, java.lang.String, java.lang.String...):


    public static Path getPath(URI uri, String first, String... more) throws IOException {
        FileSystem fileSystem = getFileSystem(uri);
        Path path = fileSystem.getPath(first, more);
        if (IS_WINDOWS_OS && "jar".equals(uri.getScheme())) {
            // it's a ZipFileSystem
            fileSystem.close();
        }

        return path;
    }

Zip file is closed and as result, extensionPath (that is instance of ZipPath) is closed when it gets to Files.walkFileTree(...) in readExtensions

@decebals
Copy link
Member

@valkuc

I sensed where the problem was. If you take a look on blame that close is a modification introduced by #355.
The problem is not simple to solve and for the moment I don't have solutions.
Maybe a unit test to reproduce the problem will help us find a stable solution without introducing regressions.

@decebals
Copy link
Member

decebals commented Jul 24, 2020

@MacTrophy
I created a new SNAPSHOT (3.5.0-SNAPSHOT) that contains #377. Can you check it, please?

@MacTrophy
Copy link
Contributor Author

@MacTrophy
I created a new SNAPSHOT (3.5.0-SNAPSHOT) that contains #377. Can you check it, please?

Great news the demo now works on Windows with 3.5.0-SNAPSHOT! I even tried with the old plugin files I tested 3.3 and 3.4 with the 3.5 and it works, I guess this is conclusive enough?

Also, I managed to build the pf4j-3.5.0-SNAPSHOT.jar and use it my software and it works!

@decebals
Copy link
Member

Solved by #388. Thanks @valkuc for solution and @MacTrophy for reporting!
My intention is to release a new fix version today. The new release (3.4.1) will contains critical fixes as:

@Sangeeta-Yelgod-by
Copy link

Hi Team,
I am facing strange issue while working with pf4j library..
in the directory i have 3 version of plugins placed
D:\JDA\wmwlmdisc\les\files\connector\NAZ01

  1. connector-orchestration-plugin-2021.2.10.jar - latest once i am expecting this plugin to start
  2. connector-orchestration-plugin-2021.1.10.jar
  3. \connector-orchestration-plugin-2021.1.8.jar

but from below logs could see connector-orchestration-plugin@2021.1.10 is starting
2021-07-25 03:12:02.644 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'connector-orchestration-plugin@2021.1.10' resolved**

I am not able to figure out why this is happening ..need help here .. thank you

 There is an already loaded plugin (PluginWrapper [descriptor=PluginDescriptor [pluginId=connector-orchestration-plugin, pluginClass=com.blueyonder.logistics.plugin.orchestration.OrchestrationPlugIn, version=2021.1.10, provider=Blue Yonder, dependencies=[], description=, requires=*, license=null], pluginPath=D:\JDA\wmwlmdisc\les\files\connector\NAZ01\connector-orchestration-plugin-2021.1.10.jar]) with the same id (connector-orchestration-plugin) as the plugin at path 'D:\JDA\wmwlmdisc\les\files\connector\NAZ01\connector-orchestration-plugin-2021.2.10.jar'. Simultaneous loading of plugins with the same PluginId is not currently supported.
As a workaround you may include PluginVersion and PluginProvider in PluginId.
org.pf4j.PluginRuntimeException: There is an already loaded plugin (PluginWrapper [descriptor=PluginDescriptor [pluginId=connector-orchestration-plugin, pluginClass=com.blueyonder.logistics.plugin.orchestration.OrchestrationPlugIn, version=2021.1.10, provider=Blue Yonder, dependencies=[], description=, requires=*, license=null], pluginPath=D:\JDA\wmwlmdisc\les\files\connector\NAZ01\connector-orchestration-plugin-2021.1.10.jar]) with the same id (connector-orchestration-plugin) as the plugin at path 'D:\JDA\wmwlmdisc\les\files\connector\NAZ01\connector-orchestration-plugin-2021.2.10.jar'. Simultaneous loading of plugins with the same PluginId is not currently supported.
As a workaround you may include PluginVersion and PluginProvider in PluginId.
	at org.pf4j.AbstractPluginManager.loadPluginFromPath(AbstractPluginManager.java:802) ~[connector-2020.4.1.jar:?]
	at org.pf4j.DefaultPluginManager.loadPluginFromPath(DefaultPluginManager.java:130) ~[connector-2020.4.1.jar:?]
	at org.pf4j.AbstractPluginManager.loadPlugins(AbstractPluginManager.java:224) [connector-2020.4.1.jar:?]
	at com.blueyonder.connector.shell.ShellApplication.startPluginManager(ShellApplication.java:64) [connector-2020.4.1.jar:?]
	at com.blueyonder.connector.shell.ShellApplication.initializeApp(ShellApplication.java:36) [connector-2020.4.1.jar:?]
	at com.blueyonder.connector.shell.ShellApplication.main(ShellApplication.java:32) [connector-2020.4.1.jar:?]
2021-07-25 03:12:02.473 [main]  ERROR org.pf4j.AbstractPluginManager - There is an already loaded plugin (PluginWrapper [descriptor=PluginDescriptor [pluginId=connector-orchestration-plugin, pluginClass=com.blueyonder.logistics.plugin.orchestration.OrchestrationPlugIn, version=2021.1.10, provider=Blue Yonder, dependencies=[], description=, requires=*, license=null], pluginPath=D:\JDA\wmwlmdisc\les\files\connector\NAZ01\connector-orchestration-plugin-2021.1.10.jar]) with the same id (connector-orchestration-plugin) as the plugin at path 'D:\JDA\wmwlmdisc\les\files\connector\NAZ01\connector-orchestration-plugin-2021.1.8.jar'. Simultaneous loading of plugins with the same PluginId is not currently supported.
As a workaround you may include PluginVersion and PluginProvider in PluginId.
org.pf4j.PluginRuntimeException: There is an already loaded plugin (PluginWrapper [descriptor=PluginDescriptor [pluginId=connector-orchestration-plugin, pluginClass=com.blueyonder.logistics.plugin.orchestration.OrchestrationPlugIn, version=2021.1.10, provider=Blue Yonder, dependencies=[], description=, requires=*, license=null], pluginPath=D:\JDA\wmwlmdisc\les\files\connector\NAZ01\connector-orchestration-plugin-2021.1.10.jar]) with the same id (connector-orchestration-plugin) as the plugin at path 'D:\JDA\wmwlmdisc\les\files\connector\NAZ01\connector-orchestration-plugin-2021.1.8.jar'. Simultaneous loading of plugins with the same PluginId is not currently supported.
As a workaround you may include PluginVersion and PluginProvider in PluginId.
	at org.pf4j.AbstractPluginManager.loadPluginFromPath(AbstractPluginManager.java:802) ~[connector-2020.4.1.jar:?]
	at org.pf4j.DefaultPluginManager.loadPluginFromPath(DefaultPluginManager.java:130) ~[connector-2020.4.1.jar:?]
	at org.pf4j.AbstractPluginManager.loadPlugins(AbstractPluginManager.java:224) [connector-2020.4.1.jar:?]
	at com.blueyonder.connector.shell.ShellApplication.startPluginManager(ShellApplication.java:64) [connector-2020.4.1.jar:?]
	at com.blueyonder.connector.shell.ShellApplication.initializeApp(ShellApplication.java:36) [connector-2020.4.1.jar:?]
	at com.blueyonder.connector.shell.ShellApplication.main(ShellApplication.java:32) [connector-2020.4.1.jar:?]
**2021-07-25 03:12:02.644 [main]  INFO  org.pf4j.AbstractPluginManager - Plugin 'connector-ingestion-plugin@2021.1.1' resolved
2021-07-25 03:12:02.644 [main]  INFO  org.pf4j.AbstractPluginManager - Plugin 'connector-orchestration-plugin@2021.1.10' resolved**
2021-07-25 03:12:02.644 [main]  INFO  org.pf4j.AbstractPluginManager - Plugin 'bootstrap-plugin@2020.4.1' resolved
2021-07-25 03:12:02.644 [main]  INFO  org.pf4j.AbstractPluginManager - Start plugin 'connector-ingestion-plugin@2021.1.1'
2021-07-25 03:12:02.660 [main] connector-ingestion-plugin INFO  com.blueyonder.logistics.plugin.ingestion.IngestionPlugIn - Plugin starting connector-ingestion-plugin 2021.1.1

@decebals
Copy link
Member

@Sangeeta-Yelgod-by Is it your comment related to description of this issue. If not, please reopen a new issue. Thanks!

@decebals
Copy link
Member

@Sangeeta-Yelgod-by Is it your comment related to description of this issue. If not, please reopen a new issue. Thanks!

Now I see that you created #466. We will move the discussion on this topic in #466.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants