我正在尝试使用SVNKit和spring通过Web门户来处理svn操作。我能够执行单独的操作,例如commit,cleanup,update等。我的提交代码如下:

public Exception commit(String user, String password, String fileName,String comment) {

    Exception svnException = null;
    try {
        SVNUtil.cleanUpSVN();
        ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(user, password);
        ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
        SVNClientManager svnClientManager = SVNClientManager.newInstance(options, authManager);
        SVNCommitClient svnCommitClient = svnClientManager.getCommitClient();
        File commitFile = new File(fileName);
        svnCommitClient.doCommit(new File[]{commitFile}, false, comment, null, null, false, false, SVNDepth.INFINITY);
    } catch (SVNException svnEx) {
        svnException = svnEx;
        svnException.printStackTrace();
    }finally{
        System.out.print("Completed Execution of Commit method");
    }
    return svnException;

}


上面的代码被单独触发时就像一个魅力,但是当我将其放到webapp实现类中时,所有的事情都会变得松散。catalina.out中出现的错误如下:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x0000003c3633362f, pid=13153, tid=0x00007f8791469700
#
# JRE version: Java(TM) SE Runtime Environment (8.0_92-b14) (build 1.8.0_92-b14)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.92-b14 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libc.so.6+0x13362f]
#
# Core dump written. Default location: /home/shavivek/Downloads/apache-tomcat-7.0.70/logs/core or core.13153
#
# An error report file with more information is saved as:
# /home/shavivek/Downloads/apache-tomcat-7.0.70/logs/hs_err_pid13153.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#


/home/shavivek/Downloads/apache-tomcat-7.0.70/logs/hs_err_pid13153.log中:

Register to memory mapping:

RAX=0x0000000000000001 is an unknown value
RBX=0x6b65766976616873 is an unknown value
RCX=0x0000000000000003 is an unknown value
RDX=0x0000003c4ae0f520: <offset 0xf520> in /usr/lib64/libgnome-keyring.so.0.1.1 at 0x0000003c4ae00000
RSP=0x00007f87914640b8 is pointing into the stack for thread: 0x00007f8764002000
RBP=0x00007f8791464180 is pointing into the stack for thread: 0x00007f8764002000
RSI=0x6b65766976616873 is an unknown value
RDI=0x6b65766976616870 is an unknown value
R8 =0x6b65766976616873 is an unknown value
R9 =0x00007f876005f070 is an unknown value
R10=0x00007f8791463e20 is pointing into the stack for thread: 0x00007f8764002000
R11=0x0000003c36283a8e: <offset 0x83a8e> in /lib64/libc.so.6 at 0x0000003c36200000
R12=0x00007f8754187a80 is an unknown value
R13=0x00007f876005f060 is an unknown value
R14=0x6b65766976616873 is an unknown value
R15=0x0000000000000001 is an unknown value


Stack: [0x00007f8791369000,0x00007f879146a000],  sp=0x00007f87914640b8,  free space=1004k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libc.so.6+0x13362f]
C  0x0000000000000032

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
J 6308  com.sun.jna.Native.invokeInt(JI[Ljava/lang/Object;)I (0 bytes) @ 0x00007f87b6080cd8 [0x00007f87b6080c80+0x58]
j  com.sun.jna.Function.invoke([Ljava/lang/Object;Ljava/lang/Class;Z)Ljava/lang/Object;+225
J 7060 C1 com.sun.jna.Function.invoke(Ljava/lang/Class;[Ljava/lang/Object;Ljava/util/Map;)Ljava/lang/Object; (538 bytes) @ 0x00007f87b6228d3c [0x00007f87b62277a0+0x159c]
J 6605 C2 com.sun.jna.Library$Handler.invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; (320 bytes) @ 0x00007f87b61f8ffc [0x00007f87b61f89e0+0x61c]
j  com.sun.proxy.$Proxy28.gnome_keyring_set_network_password_sync(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILcom/sun/jna/Pointer;Lcom/sun/jna/ptr/IntByR
eference;)I+67
v  ~StubRoutines::call_stub
J 1155  sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (0 bytes) @ 0x00007f87b5461cb7 [0x00007f87b5461c40+0x77]
J 388 C1 sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (104 bytes) @ 0x00007f87b521fa0c [0x00007f87b521e880+0x118c]
J 1931 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x00007f87b5744dcc [0x00007f87b5744d20+0xac]
j  org.tmatesoft.svn.core.internal.wc.SVNMethodCallLogger.invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;+101
j  com.sun.proxy.$Proxy28.gnome_keyring_set_network_password_sync(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILcom/sun/jna/Pointer;Lcom/sun/jna/ptr/IntByR
eference;)I+67
j  org.tmatesoft.svn.core.internal.util.jna.SVNGnomeKeyring.setPassword(Ljava/lang/String;Ljava/lang/String;[C)Z+103
j  org.tmatesoft.svn.core.internal.util.jna.SVNGnomeKeyring.setPassword(Ljava/lang/String;Ljava/lang/String;[CZLorg/tmatesoft/svn/core/internal/wc/ISVNGnomeKeyringPasswordProvider;)Z+71
j  org.tmatesoft.svn.core.internal.util.jna.SVNJNAUtil.addPasswordToGnomeKeyring(Ljava/lang/String;Ljava/lang/String;[CZLorg/tmatesoft/svn/core/internal/wc/ISVNGnomeKeyringPasswordProvider;)Z+12
j  org.tmatesoft.svn.core.internal.wc.DefaultSVNPersistentAuthenticationProvider$GnomeKeyringPasswordStorage.savePassword(Ljava/lang/String;[CLorg/tmatesoft/svn/core/auth/SVNAuthentication;Lorg/tmatesoft/svn/core/SVNProperties;)Z+44
j  org.tmatesoft.svn.core.internal.wc.DefaultSVNPersistentAuthenticationProvider.savePasswordCredential(Lorg/tmatesoft/svn/core/SVNProperties;Lorg/tmatesoft/svn/core/auth/SVNAuthentication;Ljava/lang/String;)V+78
j  org.tmatesoft.svn.core.internal.wc.DefaultSVNPersistentAuthenticationProvider.saveAuthentication(Lorg/tmatesoft/svn/core/auth/SVNAuthentication;Ljava/lang/String;Ljava/lang/String;)V+119
j  org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.acknowledgeAuthentication(ZLjava/lang/String;Ljava/lang/String;Lorg/tmatesoft/svn/core/SVNErrorMessage;Lorg/tmatesoft/svn/core/auth/SVNAuthentication;)V+90
j  org.tmatesoft.svn.core.auth.BasicAuthenticationManager.acknowledgeAuthentication(ZLjava/lang/String;Ljava/lang/String;Lorg/tmatesoft/svn/core/SVNErrorMessage;Lorg/tmatesoft/svn/core/auth/SVNAuthentication;Lorg/tmatesoft/svn/core/SVNUR
L;Lorg/tmatesoft/svn/core/auth/ISVNAuthenticationManager;)V+37
j  org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(Ljava/lang/String;Ljava/lang/String;Lorg/tmatesoft/svn/core/internal/io/dav/http/HTTPHeader;Ljava/io/InputStream;IILjava/io/OutputStream;Lorg/xml/sax/helpers/DefaultHa
ndler;Lorg/tmatesoft/svn/core/SVNErrorMessage;)Lorg/tmatesoft/svn/core/internal/io/dav/http/HTTPStatus;+2405
j  org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(Ljava/lang/String;Ljava/lang/String;Lorg/tmatesoft/svn/core/internal/io/dav/http/HTTPHeader;Ljava/lang/StringBuffer;IILjava/io/OutputStream;Lorg/xml/sax/helpers/Defaul
tHandler;Lorg/tmatesoft/svn/core/SVNErrorMessage;)Lorg/tmatesoft/svn/core/internal/io/dav/http/HTTPStatus;+67
j  org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(Ljava/lang/String;Ljava/lang/String;Lorg/tmatesoft/svn/core/internal/io/dav/http/HTTPHeader;Ljava/lang/StringBuffer;IILjava/io/OutputStream;Lorg/xml/sax/helpers/Defaul
tHandler;)Lorg/tmatesoft/svn/core/internal/io/dav/http/HTTPStatus;+15
j  org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(Lorg/tmatesoft/svn/core/internal/io/dav/http/IHTTPConnection;Ljava/lang/String;Ljava/lang/String;Lorg/tmatesoft/svn/core/internal/io/dav/http/HTTPHeader;Ljava/lan
g/StringBuffer;IILjava/io/OutputStream;Lorg/xml/sax/helpers/DefaultHandler;)Lorg/tmatesoft/svn/core/internal/io/dav/http/HTTPStatus;+21
j  org.tmatesoft.svn.core.internal.io.dav.DAVConnection.doMakeActivity(Lorg/tmatesoft/svn/core/io/ISVNWorkspaceMediator;)Ljava/lang/String;+94
j  org.tmatesoft.svn.core.internal.io.dav.DAVCommitEditor.createActivity()[Ljava/lang/String;+8
j  org.tmatesoft.svn.core.internal.io.dav.DAVCommitEditor.openRoot(J)V+335
j  org.tmatesoft.svn.core.internal.wc.SVNCommitUtil.driveCommitEditor(Lorg/tmatesoft/svn/core/internal/wc/ISVNCommitPathHandler;Ljava/util/Collection;Lorg/tmatesoft/svn/core/io/ISVNEditor;J)V+100
j  org.tmatesoft.svn.core.internal.wc.SVNCommitter.commit(Ljava/util/Collection;Ljava/util/Map;Lorg/tmatesoft/svn/core/SVNURL;Lorg/tmatesoft/svn/core/io/ISVNEditor;Lorg/tmatesoft/svn/core/wc/ISVNEventHandler;)Lorg/tmatesoft/svn/core/SVNC
ommitInfo;+31
j  org.tmatesoft.svn.core.internal.wc16.SVNCommitClient16.doCommit([Lorg/tmatesoft/svn/core/wc/SVNCommitPacket;ZZLjava/lang/String;Lorg/tmatesoft/svn/core/SVNProperties;)[Lorg/tmatesoft/svn/core/SVNCommitInfo;+358
j  org.tmatesoft.svn.core.internal.wc16.SVNCommitClient16.doCommit(Lorg/tmatesoft/svn/core/wc/SVNCommitPacket;ZZLjava/lang/String;Lorg/tmatesoft/svn/core/SVNProperties;)Lorg/tmatesoft/svn/core/SVNCommitInfo;+15
j  org.tmatesoft.svn.core.internal.wc2.old.SvnOldCommit.run()Lorg/tmatesoft/svn/core/SVNCommitInfo;+150
j  org.tmatesoft.svn.core.internal.wc2.old.SvnOldCommit.run()Ljava/lang/Object;+1
j  org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(Lorg/tmatesoft/svn/core/wc2/SvnOperation;)Ljava/lang/Object;+6
j  org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(Lorg/tmatesoft/svn/core/wc2/SvnOperation;)Ljava/lang/Object;+67
j  org.tmatesoft.svn.core.wc2.SvnOperation.run()Ljava/lang/Object;+9
j  org.tmatesoft.svn.core.wc2.SvnCommit.run()Lorg/tmatesoft/svn/core/SVNCommitInfo;+16
j  org.tmatesoft.svn.core.wc.SVNCommitClient.doCommit([Lorg/tmatesoft/svn/core/wc/SVNCommitPacket;ZZLjava/lang/String;Lorg/tmatesoft/svn/core/SVNProperties;)[Lorg/tmatesoft/svn/core/SVNCommitInfo;+342
j  org.tmatesoft.svn.core.wc.SVNCommitClient.doCommit([Ljava/io/File;ZLjava/lang/String;Lorg/tmatesoft/svn/core/SVNProperties;[Ljava/lang/String;ZZLorg/tmatesoft/svn/core/SVNDepth;)Lorg/tmatesoft/svn/core/SVNCommitInfo;+29
j  com.diglert.implementation.MonsvnSVNHandler.commit(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Exception;+98
j  com.diglert.implementation.FormRequestHandler.processUserInputs(Ljava/util/Map;)Ljava/lang/Exception;+204
j  com.diglert.controller.DiglertController.processFormData(Ljava/util/Map;Lorg/springframework/ui/ModelMap;Ljava/util/Map;)Ljava/lang/String;+12
v  ~StubRoutines::call_stub
J 1155  sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (0 bytes) @ 0x00007f87b5461cb7 [0x00007f87b5461c40+0x77]
J 388 C1 sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (104 bytes) @ 0x00007f87b521fa0c [0x00007f87b521e880+0x118c]
J 1931 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x00007f87b5744dcc [0x00007f87b5744d20+0xac]
j  org.springframework.web.method.support.InvocableHandlerMethod.invoke([Ljava/lang/Object;)Ljava/lang/Object;+16
j  org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(Lorg/springframework/web/context/request/NativeWebRequest;Lorg/springframework/web/method/support/ModelAndViewContainer;[Ljava/lang/Object;)Ljava/lang/Obje
ct;+78
j  org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(Lorg/springframework/web/context/request/ServletWebRequest;Lorg/springframework/web/method/support/ModelAndViewContainer;[Ljava/lang/O
bject;)V+4
j  org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Lorg/springframework/web/method/HandlerMethod;)Lorg/s
pringframework/web/servlet/ModelAndView;+230
j  org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Lorg/springframework/web/method/HandlerMethod;)Lorg/sprin
gframework/web/servlet/ModelAndView;+89
j  org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Ljava/lang/Object;)Lorg/springframework/web/servlet/ModelAndView;+7
j  org.springframework.web.servlet.DispatcherServlet.doDispatch(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+305
j  org.springframework.web.servlet.DispatcherServlet.doService(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+319
j  org.springframework.web.servlet.FrameworkServlet.processRequest(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+72
j  org.springframework.web.servlet.FrameworkServlet.doPost(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+3
j  javax.servlet.http.HttpServlet.service(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+149
j  org.springframework.web.servlet.FrameworkServlet.service(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+32
j  javax.servlet.http.HttpServlet.service(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+30
j  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+446
j  org.apache.catalina.core.ApplicationFilterChain.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+101
j  org.apache.tomcat.websocket.server.WsFilter.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/FilterChain;)V+21
j  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+151
j  org.apache.catalina.core.ApplicationFilterChain.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+101
j  org.apache.catalina.core.StandardWrapperValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+780
j  org.apache.catalina.core.StandardContextValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+166
j  org.apache.catalina.authenticator.AuthenticatorBase.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+449
j  org.apache.catalina.core.StandardHostValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+158
j  org.apache.catalina.valves.ErrorReportValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+6
j  org.apache.catalina.valves.AccessLogValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+6
j  org.apache.catalina.core.StandardEngineValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+71
j  org.apache.catalina.connector.CoyoteAdapter.service(Lorg/apache/coyote/Request;Lorg/apache/coyote/Response;)V+199
j  org.apache.coyote.http11.AbstractHttp11Processor.process(Lorg/apache/tomcat/util/net/SocketWrapper;)Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler$SocketState;+634
j  org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(Lorg/apache/tomcat/util/net/SocketWrapper;Lorg/apache/tomcat/util/net/SocketStatus;)Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler$SocketState;+270
j  org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run()V+106
j  java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V+95
j  java.util.concurrent.ThreadPoolExecutor$Worker.run()V+5
j  org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run()V+4
j  java.lang.Thread.run()V+11
v  ~StubRoutines::call_stub


请帮助我了解这里出了什么问题

最佳答案

我相信我已经解决了SVNKit干线r10638的问题。该修复程序将包含在SVNKit版本> = 1.8.16中。

简短的问题描述:SVNKit通过JNA错误地调用了Gnome Keyring函数。这就是为什么打开Gnome Keyring或JNA调用有助于避免此问题的原因。

我是SVNKit开发人员之一。

09-15 17:47