微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

LazySodiumJava FileSystemNotFoundException 发生

如何解决LazySodiumJava FileSystemNotFoundException 发生

我正在尝试使用 Lazysodiumjava 库,但出现以下错误

java.nio.file.FileSystemNotFoundException
        at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.getFileSystem(ZipFileSystemProvider.java:172)
        at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.getPath(ZipFileSystemProvider.java:158)
        at java.base/java.nio.file.Path.of(Path.java:208)
        at java.base/java.nio.file.Paths.get(Paths.java:98)
        at co.libly.resourceloader.ResourceLoader.getFileFromFileSystem(ResourceLoader.java:237)
        at co.libly.resourceloader.ResourceLoader.copyToTempDirectory(ResourceLoader.java:88)
        at co.libly.resourceloader.SharedLibraryLoader.load(SharedLibraryLoader.java:53)
        at com.goterl.lazycode.lazysodium.utils.LibraryLoader.loadBundledLibrary(LibraryLoader.java:133)
        at com.goterl.lazycode.lazysodium.utils.LibraryLoader.loadLibrary(LibraryLoader.java:94)
        at com.goterl.lazycode.lazysodium.sodiumJava.<init>(sodiumJava.java:34)
        at com.goterl.lazycode.lazysodium.sodiumJava.<init>(sodiumJava.java:23)
        at com.eugene.kuchain.chain.Identity.Issuer.generateSignature(Issuer.java:27)
        at com.eugene.kuchain.chain.Data.Transaction.<init>(Transaction.java:20)
        at com.eugene.kuchain.chain.Core.BadgeBaker.addTransaction(BadgeBaker.java:63)
        at com.eugene.kuchain.chain.Core.BadgeBaker.addBadge(BadgeBaker.java:56)
        at com.eugene.kuchain.web.WebCommunicator.issueBadge(WebCommunicator.java:445)
        at com.eugene.kuchain.web.WebCommunicator.dobake(WebCommunicator.java:254)
        at com.eugene.kuchain.web.WebCommunicator.doTask(WebCommunicator.java:90)
        at com.eugene.kuchain.web.DefaultController.dobake(DefaultController.java:52)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:567)
        at org.springframework.web.method.support.invocableHandlerMethod.invoke(invocableHandlerMethod.java:213)
        at org.springframework.web.method.support.invocableHandlerMethod.invokeForRequest(invocableHandlerMethod.java:126)
        at org.springframework.web.servlet.mvc.method.annotation.ServletinvocableHandlerMethod.invokeAndHandle(ServletinvocableHandlerMethod.java:96)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
        at org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:923)
        at org.springframework.web.servlet.dispatcherServlet.doService(dispatcherServlet.java:852)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
        at org.apache.catalina.valves.RequestFilterValve.process(RequestFilterValve.java:348)
        at org.apache.catalina.valves.RemoteAddrValve.invoke(RemoteAddrValve.java:53)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597)
        at org.apache.tomcat.util.net.socketProcessorBase.run(SocketProcessorBase.java:49)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.base/java.lang.Thread.run(Thread.java:830)

但是,它在我的计算机上可以运行,但是当我将其发送到另一台计算机时,发生了错误

我在两台计算机上使用相同的 JDK 13(使用相同的安装文件安装)。

jar 正在与 Tomcat 一起工作,但是我将整个 tomcat 文件夹复制到另一个文件夹,但只能在我的桌面上工作。

我将两台计算机上的 java 和 tomcat 的每个环境都设置为相同。 在这里我附上我的 Java 代码

public String generateSignature(String message) throws sodiumException {
    LazysodiumJava lazysodium = new LazysodiumJava(new sodiumJava());  /* the error occured */
    Sign.Lazy sign = (Sign.Lazy) lazysodium;
    byte[] key = readPrivateKey();
    byte[] pKey = readPublicKey();
    Key secretKey = Key.fromBytes(key);
    Key pubKey = Key.fromBytes(pKey);

    KeyPair keyPair = new KeyPair(pubKey,secretKey);
    String signedMessage = sign.cryptoSign(message,keyPair.getSecretKey());
}

我也试过:

public String generateSignature(String message) throws sodiumException {
    LazysodiumJava lazysodium = new LazysodiumJava(new sodiumJava()); /* the error occured */
    LazysodiumJava lazysodiumJava1 = lazysodium;
    byte[] key = readPrivateKey();
    byte[] pKey = readPublicKey();
    Key secretKey = Key.fromBytes(key);
    Key pubKey = Key.fromBytes(pKey);

    KeyPair keyPair = new KeyPair(pubKey,secretKey);
    String signedMessage = lazysodiumJava1.cryptoSign(message,keyPair.getSecretKey());
}

我不知道出了什么问题,因为它在我的桌面上运行。

发生错误的地方是:LazysodiumJava lazysodium = new LazysodiumJava(new sodiumJava());

谢谢。

解决方法

我解决了这个问题。在我的另一台计算机上没有 libsodium 库。 我不知道我的桌面如何自行下载它,但是我从 delete 下载了 libsodium 库,并将 https://download.libsodium.org/libsodium/releases/ 更改为 LazySodiumJava lazySodium = new LazySodiumJava(new SodiumJava());,如文档所述。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。