Deploying multiple release .jar on Oracle WebLogic Server

4.6k Views Asked by At

We are trying to deploy a web service (a .war file) onto an Oracle WebLogic 12.2.1.0.0 Server.

The .war contains some third party .jars, for example log4j-api-2.12.0.jar, that are multiple release .jars (per JEP 238, having Multi-Release: true in MANIFEST.MF).

As such, it includes some Java 9 compiled classes in the META-INF/versions/9 directory. WebLogic 12.2 uses Java 8 only (confirmed version as Java 1.8.0_92 via WebLogic Admin Console).

As I understand it, Java 8 servers are supposed to not see / ignore any classes under the META-INF/versions directory, but this does not seem to be happening. It appears as though Oracle WLS is just scanning the whole .war.

As a result, when we try to deploy the .war, we get errors like this one:

BEA-160248 Unable to parse class file:... (then a long path name into the META-INF/versions/9 directory)

Is there something special we need to do to make this work? I'll accept anything along the lines of:

  • Configure WLS somehow to ignore the META-INF/versions/9 classes
  • Configure Maven to somehow build the .war without the META-INF/versions/9 classes that are present in the third-party .jars.

I'm not interested in answers involving manually deleting anything from the .war every time it is built. Also, I'm not sure I can downgrade to earlier versions of the 3rd party .jars at this point. Log4j2, probably could... but there are others.

Thanks!

3

There are 3 best solutions below

3
On BEST ANSWER

After looking into it further, the

BEA-160248 Unable to parse class file...

messages were a red herring. After solving other, unrelated problems, the application does deploy and work as needed, in spite of these error messages appearing in the log.

1
On

I would like to add that according to Doc ID 2629550.1:

This message is harmless and can be ignored.

2
On

JEP 238 is from Java 9 and WebLogic Server does not run with Java 9.