Что вызвало java.lang.InternalError (это расширяет VirtualMachineError) - PullRequest
1 голос
/ 09 декабря 2011

Когда я попытался выполнить синхронизацию SVN, я получил эту ошибку.Интересно, почему это произошло, есть идеи?Он прекрасно работает после перезапуска затмения, но мне интересно, что могло вызвать его и как возможно, что баночка не была найдена.

!ENTRY org.eclipse.team.svn.core.svnnature 4 0 2011-12-09 14:22:15.534
!MESSAGE SVN: '0x00000107: Synchronizing' operation finished with error
!SUBENTRY 1 org.eclipse.team.svn.core.svnnature 4 0 2011-12-09 14:22:15.534
!MESSAGE Synchronize operation failed.
!STACK 0
java.lang.InternalError
    at sun.misc.URLClassPath$JarLoader.getResource(URLClassPath.java:755)
    at sun.misc.URLClassPath.getResource(URLClassPath.java:169)
    at sun.misc.URLClassPath.getResource(URLClassPath.java:221)
    at java.lang.ClassLoader.getBootstrapResource(ClassLoader.java:1151)
    at java.lang.ClassLoader.getResource(ClassLoader.java:1000)
    at java.lang.ClassLoader.getResource(ClassLoader.java:998)
    at java.lang.ClassLoader.getSystemResource(ClassLoader.java:1101)
    at javax.crypto.SunJCE_b.i(DashoA13*..)
    at javax.crypto.SunJCE_b.g(DashoA13*..)
    at javax.crypto.SunJCE_b$1.run(DashoA13*..)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.crypto.SunJCE_b.<clinit>(DashoA13*..)
    at javax.crypto.KeyAgreement.getInstance(DashoA13*..)
    at com.sun.net.ssl.internal.ssl.JsseJce.getKeyAgreement(JsseJce.java:241)
    at com.sun.net.ssl.internal.ssl.JsseJce.isEcAvailable(JsseJce.java:158)
    at com.sun.net.ssl.internal.ssl.CipherSuite$KeyExchange.isAvailable(CipherSuite.java:271)
    at com.sun.net.ssl.internal.ssl.CipherSuite.isAvailable(CipherSuite.java:143)
    at com.sun.net.ssl.internal.ssl.CipherSuiteList.buildAvailableCache(CipherSuiteList.java:210)
    at com.sun.net.ssl.internal.ssl.CipherSuiteList.getDefault(CipherSuiteList.java:233)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.init(SSLSocketImpl.java:508)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(SSLSocketImpl.java:451)
    at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:56)
    at org.tmatesoft.svn.core.internal.util.SVNSocketFactory.createSSLSocket(SVNSocketFactory.java:73)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.connect(HTTPConnection.java:186)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:327)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:275)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:263)
    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:516)
    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:98)
    at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:999)
    at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getRepositoryUUID(DAVRepository.java:146)
    at org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:342)
    at org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:330)
    at org.tmatesoft.svn.core.wc.SVNStatusClient.doStatus(SVNStatusClient.java:338)
    at org.tmatesoft.svn.core.javahl.SVNClientImpl.status(SVNClientImpl.java:300)
    at org.tmatesoft.svn.core.javahl.SVNClientImpl.status(SVNClientImpl.java:282)
    at org.polarion.team.svn.connector.svnkit.SVNKitConnector.status(SVNKitConnector.java:341)
    at org.eclipse.team.svn.core.extension.factory.ThreadNameModifier.status(ThreadNameModifier.java:608)
    at org.eclipse.team.svn.core.operation.local.RemoteStatusOperation$2.run(RemoteStatusOperation.java:147)
    at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doSubTask(ProgressMonitorUtility.java:118)
    at org.eclipse.team.svn.core.operation.AbstractActionOperation.protectStep(AbstractActionOperation.java:154)
    at org.eclipse.team.svn.core.operation.AbstractActionOperation.protectStep(AbstractActionOperation.java:149)
    at org.eclipse.team.svn.core.operation.local.RemoteStatusOperation.runImpl(RemoteStatusOperation.java:145)
    at org.eclipse.team.svn.core.operation.AbstractActionOperation.run(AbstractActionOperation.java:81)
    at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTask(ProgressMonitorUtility.java:104)
    at org.eclipse.team.svn.core.operation.CompositeOperation.runImpl(CompositeOperation.java:95)
    at org.eclipse.team.svn.core.operation.AbstractActionOperation.run(AbstractActionOperation.java:81)
    at org.eclipse.team.svn.core.operation.LoggedOperation.run(LoggedOperation.java:39)
    at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTask(ProgressMonitorUtility.java:104)
    at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTaskExternal(ProgressMonitorUtility.java:90)
    at org.eclipse.team.svn.core.synchronize.AbstractSVNSubscriber.findChanges(AbstractSVNSubscriber.java:314)
    at org.eclipse.team.svn.core.synchronize.AbstractSVNSubscriber$UpdateStatusOperation$2.run(AbstractSVNSubscriber.java:349)
    at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doSubTask(ProgressMonitorUtility.java:118)
    at org.eclipse.team.svn.core.operation.AbstractActionOperation.protectStep(AbstractActionOperation.java:154)
    at org.eclipse.team.svn.core.operation.AbstractActionOperation.protectStep(AbstractActionOperation.java:149)
    at org.eclipse.team.svn.core.synchronize.AbstractSVNSubscriber$UpdateStatusOperation.runImpl(AbstractSVNSubscriber.java:347)
    at org.eclipse.team.svn.core.operation.AbstractActionOperation.run(AbstractActionOperation.java:81)
    at org.eclipse.team.svn.core.operation.LoggedOperation.run(LoggedOperation.java:39)
    at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTask(ProgressMonitorUtility.java:104)
    at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTaskExternal(ProgressMonitorUtility.java:90)
    at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTaskExternal(ProgressMonitorUtility.java:81)
    at org.eclipse.team.svn.core.synchronize.AbstractSVNSubscriber.refresh(AbstractSVNSubscriber.java:186)
    at org.eclipse.team.svn.core.synchronize.UpdateSubscriber.refresh(UpdateSubscriber.java:73)
    at org.eclipse.team.core.subscribers.Subscriber.refresh(Subscriber.java:466)
    at org.eclipse.team.core.subscribers.SubscriberMergeContext.refresh(SubscriberMergeContext.java:85)
    at org.eclipse.team.core.mapping.provider.SynchronizationContext.refresh(SynchronizationContext.java:109)
    at org.eclipse.team.internal.ui.synchronize.RefreshModelParticipantJob.doRefresh(RefreshModelParticipantJob.java:69)
    at org.eclipse.team.internal.ui.synchronize.RefreshParticipantJob.run(RefreshParticipantJob.java:309)
    at org.eclipse.team.internal.ui.synchronize.RefreshModelParticipantJob.run(RefreshModelParticipantJob.java:117)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.io.FileNotFoundException: /usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/jce.jar
    at sun.misc.URLClassPath$JarLoader.getJarFile(URLClassPath.java:644)
    at sun.misc.URLClassPath$JarLoader.access$600(URLClassPath.java:540)
    at sun.misc.URLClassPath$JarLoader$1.run(URLClassPath.java:607)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.misc.URLClassPath$JarLoader.ensureOpen(URLClassPath.java:599)
    at sun.misc.URLClassPath$JarLoader.getResource(URLClassPath.java:753)
    ... 69 more

нет, это всегда работает.только один раз это не так.

Ответы [ 3 ]

3 голосов
/ 13 декабря 2011

Глядя на исходный код JDK sun.misc.URLClassPath и sun.misc.FileURLMapper , в FileURLMapper.exists () есть код, который выполняет следующие действия:

public boolean exists() {
    String path = getPath();
    File f = new File (path);
    return f.exists();
}

Если предположить, что ничего сумасшедшего не произошло, например, файл jce.jar был фактически удален (например, путем обновления версии Java во время работы Eclipse), то вызов File.exists () может произойти из-за какой-то другой причины (нехватка памяти / возможно, файловые дескрипторы? В Unix file.exists () в конечном итоге вызывает функцию stat / stat64 )

2 голосов
/ 13 декабря 2011

Детализация до кода , найденного здесь , что я вижу: вызов sun.misc.URLClassPath.JarLoader.ensureOpen() в строке 753 приводит к InternalError в строке 755 .

Метод похож на приведенный ниже:

private void ensureOpen() throws IOException {
    if (jar == null) {
        try {
            java.security.AccessController.doPrivileged(new java.security.PrivilegedExceptionAction() {
                        public Object run() throws IOException {
                            ....
                        }
                    });
        } catch (java.security.PrivilegedActionException pae) {
            throw (IOException) pae.getException(); // this exception is thrown
        }
    }
}

Здесь java.security.AccessController.doPrivileged(PrivilegedExceptionAction<T>) - нативный метод. Документация здесь .

Как можно понять из документа, error выбрасывается, возможно, для исключения chekced, возникающего при обработке public Object run() throws IOException {.

0 голосов
/ 09 декабря 2011

Проверить этот файл

/ USR / Библиотека / JVM / Java-6-ВС-1.6.0.20 / JRE / Библиотека / jce.jar

возможно, ваше затмение пытается пройти аутентификацию в репозитории, но не имеет классов, необходимых для обработки и выполнения аутентификации.

...