Error running 'Build Module'

When I try to build my sandboxed application as module, I get the following error:

BUILD FAILED
Found an error when building REDACTED
* Where

File : C:\Program Files\MicroEJ\MicroEJ-Studio-19.02\rcp\configuration\org.eclipse.osgi\9\data\repositories\microej-build-repository\com\is2t\easyant\plugins\microej-testsuite\3.3.2\microej-testsuite-3.3.2.ant
Line : 100 column : 80

* Problem Report:
Error : The following error occurred while executing this line:
Cause : Error : The following error occurred while executing this line:
Cause : Failed to resolve bufferedstreams-1.0.1.jar

I can put the buffered stream in my module.ivy as follows and it resolves fine:

<dependency org="ej.library.eclasspath" name="bufferedstreams" rev="1.0.1" />

And when I expand the Ivy container in the Package Explorer I see the buffered streams there. It’s also present in my cache.

If I remove the files within src/test/java, the build succeeds. The error only happens after loading th platform and trying to run the tests.

Please advise,

Steve

Hi @ssampson,

ej.library.eclasspath.bufferedstreams have been removed in between MicroEJ 4 repository and MicroEJ 5 repostiroy. Now bufferdstreams is contained into ej.library.eclasspath.collections.

  • Could you remove the bufferedstreams line
  • Clean ivy cache
  • resolve ivy for the project
  • check when you expand the Ivy container in the Package Explore that you don’t have it.

Regards,

Pierre

It must be being resolved transivitely from one of the other dependencies because even with it removed, it appears in the Ivy container in Package Explorer. If I set transivie=“false” bufferestreams no longer appears in the Ivy container but then neither do other things that I need.

I have traced it back to our AppFramework where the following dependencies are in the Ivy:

        <dependency org="ej.api" name="edc" rev="1.2.3" conf="provided"/>
		<dependency org="ej.api" name="kf" rev="1.4.4" conf="provided"/>
		<dependency org="ej.library.runtime" name="annotation" rev="1.0.0" />
		<dependency org="ej.library.eclasspath" name="properties" rev="1.0.1" />
		<dependency org="ej.library.wadapps" name="event" rev="1.0.0" />
		<dependency org="ej.library.test" name="junit" rev="1.4.2" conf="test->default"/>

Do you see anything that looks off?

ej.library.eclasspath.properties has been updated to 1.1.0 to remove the dependency with bufferdstream, could you try to update it ? (there is no other change).

Also for ej.library.test.junit, could you upgrade it to 1.5.0

Where can we get these dependencies? They are not included in the Offline Repository provided to us by Alga and the Offline Repo link on your website still links 4.1 I believe.

They are on the repository 5 (http://developer.microej.com/5/artifacts/). You can find the offline version here http://developer.microej.com/5/microej-5_0-2.1.0.zip

One of your libraries, ej.library.runtime, service, 1.1.0 (included by Wadapps 2.1.0) depends on the old version of properties (1.0.1)

<dependency org="ej.library.eclasspath" name="properties" rev="1.0.1" conf="default->default;provided->provided"/>

Is it ok for me to do the following so to eliminate this? Or are the apis in the buffered streams different and this could cause issues?

<dependency org="ej.api" name="edc" rev="1.2.3" conf="provided"/>
<dependency org="ej.api" name="kf" rev="1.4.4" conf="provided"/>
<dependency org="ej.api" name="fs" rev="2.0.6" conf="provided"/>
<dependency org="ej.library.eclasspath" name="properties" rev="1.1.0" conf="default->default;provided->provided"/>
<dependency org="ej.library.wadapps" name="wadapps" rev="2.1.0"/>
<dependency org="ej.library.wadapps" name="wadapps-common" rev="1.0.0"/>
<dependency org="ej.library.wadapps" name="wadapps-multisandbox" rev="1.1.0"/>
<dependency org="ej.library.runtime" name="storage" rev="1.0.0"/>
<dependency org="com.microej.library.util" name="kf-util" rev="2.4.0"/>
<dependency org="ej.library.test" name="junit" rev="1.5.0" conf="test->default"/>

Also, after resolving this issue with the above method, I now get the following issue:

* Problem Report:

Error : impossible to resolve dependencies:
	
Cause : resolve failed: download failed: ej.library.eclasspath#executor;1.1.0!executor.jar


* Recomendation ...

Run easyant with -verbose or -debug option to get more details.

Total time: 2 seconds

It looks like this is being pulled in by:

<dependency org="ej.library.wadapps" name="event" rev="1.0.0" />

Hi Steve,

First of all no need to add the bufferedstreams dependency in your ivy file, it is already there (transitively).
When you build a sandbox application which contains some tests, the testsuite engine will try to “resolve” all the foundation API libraries.

In your module.ivy file you have some dependencies on foundation API libraries (like edc, fs, bon, etc). To run a test, we need to found for each foundation API library, the corresponding foundation Impl library in your platform, this process is called “Resolve the foundation API library”.

Here your testsuite engine complains because it failed to “resolve” a bufferedstream as a foundation API library, but the bufferedstream should not be considered as a foundation API library, why does this happen ?

This kind of error is caused by an addon dependency found in the provided conf.
In MicroEJ you have two kinds of libraries you can depends on:

  • a foundation API library (edc, bon, fs, etc)
  • an addon library (all other libraries which are not a foundation API library)

When you depend on a foundation API library, you should have this following line in your module.ivy file:
<dependency org="ej.api" name="edc" rev="1.2.3" conf="provided->*" />
or
<dependency org="ej.api" name="edc" rev="1.2.3" />

And for an addon dependency you should have
<dependency org="my.org" name="mylib" rev="1.0.0" />

Note that for an addon dependency you should never have something like that
<dependency org="my.org" name="mylib" rev="1.0.1" conf="provided->*" />

You should have somewhere in your module.ivy (or in the module.ivy of one of your addon dependencies), a dependency on addon library like the forbidden one above (with the wrong conf=“provided->*”).

Hi Alga,

I am trying to follow your explanation but it appears to be missing a few key points…

When you depend on a foundation API library, you should have this following line in your module.ivy file:

or

What are the lines that should be in our module.ivy?

Pierre helped me update our Framework to MicroEJ 5 dependencies (ej.library.runtime service 1.1.1) to remove the dependency on the older buffered streams, executor, and collections libraries. This did solve that issue (though now we have another). Is that not the approach you would recommend?

I updated the reply.
The reply explain why you have this error, regardless of the MicroEJ 5 dependencies or not.
You can keep using the new set of dependencies.

Ok, thank you. I thought the EDC would be resolved transitively from the AppFramework / Common but that explains it.