How to add Java classes to a Worklight adapter whe

2019-07-03 14:14发布

问题:

I am trying to add Java classes to my adapter as described in the tutorial Using Java in Adapters. However, I am trying to do that from the CLI.

When I do:

  • wl create WLProject
  • cd WLProject
  • wl add adapter
  • copy the Java class (Calculator1.java) to server/java/com/worklight/customcode
  • wl start

The build process fails and no war file is created;

When I do:

  • wl create WLProject
  • cd WLProject
  • wl add adapter
  • wl start
  • copy the Java class (Calculator1.java) to server/java/com/worklight/customcode
  • wl build
  • wl deploy
  • wl invoke

The invocation fails. When I inspect the war file, the Calculator1.class has not been deployed.

So the question is: how can I add Java classes to an adapter when using the CLI?

回答1:

Sounds like a bug to me. It looks like the build process fails when introducing server-side artifacts.
This might be not currently supported in the CLI, but I can't imagine such a limitation...

I've opened a defect to have this looked at.
You can open a PMR (support ticket) to receive a fix if/when available.


If I do the following,
the .war file is being generated.

wl create myTestProject
cd myTestProject/
wl build

But if I do this,
the .war file is not generated which is why everything else then fails:

wl create myTestProject
mkdir -p myTestProject/server/java/com/worklight/customcode
cp Calculator.java myTestProject/server/java/com/worklight/customcode
cd myTestProject/
wl build


回答2:

There's an invalid classpathref in the build file that's producing the WAR.

You can edit [CLI Install Location]/worklight-cli/node_modules/generator-worklight-server/lib/build.xml to fix this issue with the classpathref.

If you're not planning on using any server runtime libraries:
On line 132, you can remove the attribute classpathref="server-classpath".

If you plan on using server runtime libraries:
You'll need to add the "server-classpath" to be used when compiling your code. Before the build-WAR target in the build.xml file, you can add the following
<path id="server-classpath"> <fileset dir="${worklight.jars.dir}" includes="worklight-jee-library.jar" /> <fileset dir="[your home directory]/.worklight/6.2.0/server/wlp/dev" includes="**/*.jar" /> </path>

Please note that the second fileset, you'll have to change [your home directory] to the appropriate path. Adding both of these filesets includes the worklight runtime and the server runtime when compiling your classes.

When you've made your changes:
Restart the server. At this point, the Calculator1 class should be added to your WAR.