简体   繁体   中英

Getting Started with the Ledger API

I am working through Getting started with the Digital Asset Ledger API . I was careful to follow the direction to Configure Maven to work with the Digital Asset Repository Creating the ping-pong-java project, and compiling it with 'maven' and running 'sandbox' worked w/oa problem. However, entering:

mvn exec:java

causes the following output:

[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] Building example-ping-pong-grpc-java 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- exec-maven-plugin:1.6.0:java (default-cli) @ example-ping-pong-grpc-java ---
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[WARNING] 
java.lang.RuntimeException: Module PingPong is not available on the ledger
    at examples.pingpong.PingPongMain.detectPingPongPackageId (PingPongMain.java:194)
    at examples.pingpong.PingPongMain.main (PingPongMain.java:63)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:564)
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run (ExecJavaMojo.java:282)
    at java.lang.Thread.run (Thread.java:844)
[WARNING] thread Thread[grpc-default-worker-ELG-1-1,5,examples.pingpong.PingPongMain] was interrupted but is still alive after waiting at least 15000msecs
[WARNING] thread Thread[grpc-default-worker-ELG-1-1,5,examples.pingpong.PingPongMain] will linger despite being asked to die via interruption
[WARNING] thread Thread[grpc-default-executor-0,5,examples.pingpong.PingPongMain] will linger despite being asked to die via interruption
[WARNING] thread Thread[ObjectCleanerThread,1,examples.pingpong.PingPongMain] will linger despite being asked to die via interruption
[WARNING] thread Thread[grpc-default-worker-ELG-1-2,5,examples.pingpong.PingPongMain] will linger despite being asked to die via interruption
[WARNING] thread Thread[grpc-default-worker-ELG-1-3,5,examples.pingpong.PingPongMain] will linger despite being asked to die via interruption
[WARNING] thread Thread[grpc-default-worker-ELG-1-4,5,examples.pingpong.PingPongMain] will linger despite being asked to die via interruption
[WARNING] thread Thread[grpc-default-worker-ELG-1-5,5,examples.pingpong.PingPongMain] will linger despite being asked to die via interruption
[WARNING] thread Thread[grpc-default-worker-ELG-1-6,5,examples.pingpong.PingPongMain] will linger despite being asked to die via interruption
[WARNING] thread Thread[grpc-default-worker-ELG-1-7,5,examples.pingpong.PingPongMain] will linger despite being asked to die via interruption
[WARNING] NOTE: 9 thread(s) did not finish despite being asked to  via interruption. This is not a problem with exec:java, it is a problem with the running code. Although not serious, it should be remedied.
[WARNING] Couldn't destroy threadgroup org.codehaus.mojo.exec.ExecJavaMojo$IsolatedThreadGroup[name=examples.pingpong.PingPongMain,maxpri=10]
java.lang.IllegalThreadStateException
    at java.lang.ThreadGroup.destroy (ThreadGroup.java:776)
    at org.codehaus.mojo.exec.ExecJavaMojo.execute (ExecJavaMojo.java:321)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:309)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:194)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:107)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:955)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:564)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 18.860 s
[INFO] Finished at: 2019-02-25T15:45:02-05:00
[INFO] Final Memory: 12M/57M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java (default-cli) on project example-ping-pong-grpc-java: An exception occured while executing the Java class. Module PingPong is not available on the ledger -> [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

I following the link in the error message http://www.slf4j.org/codes.html#StaticLoggerBinder and it says there as follows:

Failed to load class org.slf4j.impl.StaticLoggerBinder
This warning message is reported when the org.slf4j.impl.StaticLoggerBinder class could not be loaded into memory. This happens when no appropriate SLF4J binding could be found on the class path. Placing one (and only one) of slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar or logback-classic.jar on the class path should solve the problem.

SINCE 1.6.0 As of SLF4J version 1.6, in the absence of a binding, SLF4J will default to a no-operation (NOP) logger implementation.

If you are responsible for packaging an application and do not care about logging, then placing slf4j-nop.jar on the class path of your application will get rid of this warning message. Note that embedded components such as libraries or frameworks should not declare a dependency on any SLF4J binding but only depend on slf4j-api. When a library declares a compile-time dependency on a SLF4J binding, it imposes that binding on the end-user, thus negating SLF4J's purpose. 

I don't know what to make of all this. I only want to follow this tutorial to understand the API ledger. I am not experienced with java or maven and I'm not planning on learning them since my Ledger application needs to be written in PHP. What do I need to do to get around this error?

I think the red stack trace is a bit of a red herring, and the important message is the RuntimeException thrown from examples.pingpong.PingPongMain.detectPingPongPackageId (PingPongMain.java:194) - that indicates that the Java code can't find the DAML model code that should be loaded into ledger (sandbox). Did you run da sandbox ? Try again and make sure the sandbox is running. Also check your da.yaml to make sure it is there, and looks something like this:

project:
  sdk-version: 0.11.3
  name: PingPongExample
  source: daml/PingPong.daml
  parties:
  - Alice
  - Bob
version: 2

If your ledger server (sandbox) runs correctly you should see this printed to the terminal:

paul:ping-pong-java$ da sandbox
[Info] Starting:
    Sandbox ledger server /Users/paul/dev/ping-pong-java/daml/PingPong.daml
    with no scenario and binding to port 7600

2019-02-26 14:14:50.09 [DEBUG]  [package]  []  [DA.Service.Daml.Compiler.Impl.Handle:245] 
Creating dar: /Users/paul/dev/ping-pong-java/daml/PingPong.daml

2019-02-26 14:14:50.09 [DEBUG]  [package]  []  [DA.Service.Daml.Compiler.Impl.Handle:171] 
Setting files of interest to: [AbsoluteFilePath {getRawFilePath = "/Users/paul/dev/ping-pong-java/daml/PingPong.daml"}]

2019-02-26 14:14:50.09 [INFO]   [package]  [] 
Starting shakeRun (aborting the previous one took 0.00s)

2019-02-26 14:14:50.09 [DEBUG]  [package]  []  [DA.Service.Daml.Compiler.Impl.Handle:217] 
Compiling: /Users/paul/dev/ping-pong-java/daml/PingPong.daml

2019-02-26 14:14:50.09 [INFO]   [package]  [] 
Finishing shakeRun (took 0.00s, exception)

2019-02-26 14:14:50.09 [INFO]   [package]  [] 
Starting shakeRun (aborting the previous one took 0.00s)

2019-02-26 14:14:51.17 [INFO]   [package]  [] 
Finishing shakeRun (took 1.08s, completed)

2019-02-26 14:14:51.17 [INFO]   [package]  [] 
Starting shakeRun (aborting the previous one took 0.00s)

2019-02-26 14:14:51.17 [INFO]   [package]  [] 
Finishing shakeRun (took 0.00s, completed)
Created /Users/paul/dev/ping-pong-java/target/PingPongExample.dar.
Created /Users/paul/dev/ping-pong-java/target/ghc-prim.dalf.
Waiting for Sandbox.......ok

I'm assuming you are running the latest version of the SDK (0.11.3). Please upgrade if you are not.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM