2017-10-23 5 views
0

コードノードを起動すると、エラーメッセージが表示されます。Corda:v1.0にアップグレードした後の開始ノードでエラーが発生し、META-INF.servicesにシリアライズのホワイトリストが追加されました

Exception in thread "main" java.lang.NoClassDefFoundError: 
     net/corda/webserver/services/WebServerPluginRegistry 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(Unknown Source) 
    at java.security.SecureClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.access$100(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Unknown Source) 
    at java.util.ServiceLoader$LazyIterator.nextService(Unknown Source) 
    at java.util.ServiceLoader$LazyIterator.next(Unknown Source) 
    at java.util.ServiceLoader$1.next(Unknown Source) 

プラグインのコード:エラーの乗り心地を得るために

class testcasePlugin : SerializationWhitelist, WebServerPluginRegistry{ 

override val webApis = listOf(
     Function(::MiscApi), 

) 

override val staticServeDirs: Map<String, String> = mapOf(
     // URL is /web/index 
     "index" to javaClass.classLoader.getResource("index").toExternalForm(), 
     // URL is /web/testcase 
     "testcase" to javaClass.classLoader.getResource("testcase").toExternalForm() 
) 

override val whitelist: List<Class<*>> = listOf(TransactionBuilder::class.java) 
} 

トリックは、META-INFから「net.corda.core.serialization.SerializationWhitelist」ファイルを削除することです。 servicesフォルダには、 'net.corda.webserver.services.WebServerPluginRegistry'ファイルだけが残っています。

何が問題になりましたか?

+0

はhttps://stackoverflow.com/questions/45855475/m14-runnodes-cannot-start-the-controllerを参照してください。 – joel

+0

正しい@joelですが、CordaPluginRegistryがなくなりました。このホワイトリストのシリアル化を行う正しい方法は何ですか? –

答えて

0

次のように、二つにプラグインを分割する必要があります。

class testcaseWebPlugin : WebServerPluginRegistry { 

override val webApis = listOf(
    Function(::MiscApi)) 

override val staticServeDirs: Map<String, String> = mapOf(
    // URL is /web/index 
    "index" to javaClass.classLoader.getResource("index").toExternalForm(), 
    // URL is /web/testcase 
    "testcase" to javaClass.classLoader.getResource("testcase").toExternalForm() 
) 

class testcaseSerializationPlugin : SerializationWhitelist { 

    override val whitelist: List<Class<*>> = 
     listOf(TransactionBuilder::class.java) 
    } 
} 
+0

Joelに感謝します。それは美しくそれを解決する! –

関連する問題