Failed resolution of: Lorg/apache/commons/lang3/ArrayUtils

Hi everybody,
in the extension that I am developing I need to use ArrayUtils.addAll
In the appinventor/lib/commons-lang3 I saw that there is commons-lang3-3.10.jar
So in the build.xml file I added:
libraryjar file="${public.deps.dir}/commons-lang3-3.10.jar" /
copy toFile="${public.deps.dir}/commons-lang3.jar" file="${lib.dir}/commons-lang3/commons-lang3-3.10.jar" /
and in my extension I added
import org.apache.commons.lang3.ArrayUtils;

I can compile the extension
but when I run the project I have this error:

Failed resolution of: Lorg/apache/commons/lang3/ArrayUtils

What I missed?
Can You help me
Thank You

You should remove dir name from toFile attribute.

Hi vknow360,
thank You for your help.
Do You mean I should write
copy toFile="commons-lang3.jar" file="${lib.dir}/commons-lang3/commons-lang3-3.10.jar"
because I tried but I have error when I compile the extensions
error: package org.apache.commons.lang3 does not exist

Any other tips?
Thank You
Best Regards

So, have you added commons lang3 jar in /lib/commons-lang3 dir?
It is there.

You should write commons-lang3-3.10.jar

Also,have you specified this jar in your extension using UsesLibraries annotation?

1 Like

Hi Sunny Gupta,
thanks for your help, unfortunately your tip does not work.
In these days a read many topic about add libraries on extension,
es. How to add external libraries
Step 1,2,3 the library commons-lang3-3.10.jar is already in the appinventor-sources/appinventor/lib
Step 4 in the file components\build.xml i added copy toFile="${public.deps.dir}/commons-lang3.jar" file="${lib.dir}/commons-lang3/commons-lang3-3.10.jar"
Step 5 in my extension I added @UsesLibraries(libraries = "commons-lang3.jar")

When I compile i have this PARSE error

[unzip] Expanding: C:\ai\appinventor\components\build\externalComponents-class\\commons-lang3.jar into C:\ai\appinventor\components\build\externalComponents-class\


[jar] Building jar: C:\ai\appinventor\components\build\externalComponents-class\

[copy] Copying 1 file to C:\ai\appinventor\components\build\externalComponents\\files
[echo] Generated build file AndroidRuntime.jar []


[java] InvokeDynamic not supported
[java] ...while preparsing cst 0035 at offset 000000d2
[java] ...while parsing org/apache/commons/lang3/ArchUtils.class
[java] 1 error; aborting
[java] Picked up _JAVA_OPTIONS: -Xmx1024M

C:\ai\appinventor\build.xml:46: The following error occurred while executing this line:
C:\ai\appinventor\components\build.xml:463: The following error occurred while executing this line:
C:\ai\appinventor\components\build.xml:476: Java returned: 1

I don't know how to solve
Best Regards

It is a very rare error faced by extension developers.
It means that the lib you want to use has at least one lambda uses.
Simplest solution is to use an older version of lib.

Very strange this is the library already present in the AppInventor Source

I will try to use an older lib, but should be nice to know why this library is present and how to use it
Thanks again Sunny Gupta
Best Regards

1 Like

Hi Sunny Gupta,
you solved my problem.
I used common-lang-2.6.jar and I successfully compiled the extension and I solved the error in the subject of this topic too.
Thank You very much
Best Regards

1 Like

Glad I could help. :slightly_smiling_face: