2009-06-02 3 views
0

Я создаю плагин eclipse (плагин заметок, но его плагин затмения в конце). Один из плагинов моего плагина зависит от необходимости загрузки родной DLL.плагин eclipse не загружает dll из-за длинного пути

Проблема в том, что это не удается в зависимости от того, где на диске такая DLL. Если он больше, чем определенный порог, я получаю ошибку ниже

java.lang.UnsatisfiedLinkError: nlsxbe (. Имя файла или его расширение имеет слишком большую длину) на java.lang.ClassLoader.loadLibraryWithPath (ClassLoader.java:952) в java.lang.ClassLoader.loadLibraryWithClassLoader (ClassLoader.java:921) в java.lang.System.loadLibrary (System.java:452) в lotus.domino.NotesThread.load (Unknown Source) в lotus.domino .NotesThread.checkLoaded (Unknown Source) в lotus.domino.NotesThread.sinitThread (Unknown Source) в com.atempo.adam.lotus.plugin.views.TopicView.createPartControl (TopicView.java:609)

Я добавил путь к Path env var, а также зарегистрировал dll безрезультатно. Мой env - Ms vista profesional, java1.5, eclipse3.4 (и lotus 8)

У кого-нибудь есть ключ?

Большое спасибо заранее.

ответ

1

У меня были подобные проблемы, и мне пришлось просто убедиться, что файлы не находятся в длинном пути.

Существует множество программ, которые, похоже, имеют проблемы с длинными дорожками, включая некоторые из встроенных программ Windows.

Вы контролируете, где находится эта DLL?

-2

Yuck. Here is a discussion на данную проблему.

Теперь, когда я был полезен, позвольте мне почитать автора оригинального плагина для создания плагина eclipse, который зависит от DLL, и вас по расширению в зависимости от этого плагина. Что это? 1993?

1

Я пытался зарегистрировать dll и переместить его в c: \ windows \ system32 (более короткий путь), но мой плагин Lotus Notes не может загрузить нужную библиотеку (Notes.jar).

Он работает только в том случае, если я устанавливаю Lotus Notes на путь короче, чем «c: \ program files \ IBM \ lotus \ Notes», где работает отлично. Если я его установлю, например, «c: \ Archivos de programa \ IBM \ lotus \ Notes», он может найти мою dll, но не может загрузить библиотеку.

Ошибка:

МОГИЛА Невозможно создать вид ID com.atempo.adam.lotus.plugin.views.TopicView: nlsxbe (имя файла или расширение слишком долго.) :: class.method = неизвестно :: thread = main :: loggername = org.eclipse.ui.workbench

java.lang.UnsatisfiedLinkError: nlsxbe (The filename or extension is too long.) 
at java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:952) 
at java.lang.ClassLoader.loadLibraryWithClassLoader(ClassLoader.java:921) 
at java.lang.System.loadLibrary(System.java:452) 
at lotus.domino.NotesThread.load(Unknown Source) 
at lotus.domino.NotesThread.checkLoaded(Unknown Source) 
at lotus.domino.NotesThread.sinitThread(Unknown Source) 
at com.atempo.adam.lotus.plugin.views.TopicView.createPartControl(TopicView.java:639) 
at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:332) 
at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:197) 
at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:566) 
at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:290) 
at org.eclipse.ui.internal.ViewPane.setVisible(ViewPane.java:525) 
at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:140) 
at com.ibm.rcp.ui.internal.presentations.FolderStackPresentation.selectPart(FolderStackPresentation.java:692) 
at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1144) 
at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:620) 
at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:532) 
at org.eclipse.ui.internal.PartSashContainer.createControl(PartSashContainer.java:562) 
at org.eclipse.ui.internal.PerspectiveHelper.activate(PerspectiveHelper.java:244) 
at org.eclipse.ui.internal.Perspective.onActivate(Perspective.java:815) 
at org.eclipse.ui.internal.WorkbenchPage.setPerspective(WorkbenchPage.java:3269) 
at org.eclipse.ui.internal.WorkbenchPage.busySetPerspective(WorkbenchPage.java:956) 
at org.eclipse.ui.internal.WorkbenchPage.access$12(WorkbenchPage.java:940) 
at org.eclipse.ui.internal.WorkbenchPage$12.run(WorkbenchPage.java:3368) 
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67) 
at org.eclipse.ui.internal.WorkbenchPage.setPerspective(WorkbenchPage.java:3366) 
at org.eclipse.ui.internal.Workbench.showPerspective(Workbench.java:2102) 
at com.ibm.rcp.portal.app.ui.internal.serviceImpl.DoInternalUIService.openApplicationPerspective(DoInternalUIService.java:981) 
at com.ibm.rcp.portal.app.ui.internal.serviceImpl.DoInternalUIService.openApplicationPerspective(DoInternalUIService.java:886) 
at com.ibm.rcp.portal.app.ui.internal.serviceImpl.DoInternalUIService.openApplicationPerspectiveWithNavigator(DoInternalUIService.java:863) 
at com.ibm.rcp.portal.app.ui.internal.serviceImpl.DoInternalUIService.access$12(DoInternalUIService.java:857) 
at com.ibm.rcp.portal.app.ui.internal.serviceImpl.DoInternalUIService$8.run(DoInternalUIService.java:1197) 
at org.eclipse.ui.internal.UILockListener.doPendingWork(UILockListener.java:155) 
at org.eclipse.ui.internal.UISynchronizer$1.run(UISynchronizer.java:36) 
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) 
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123) 
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3659) 
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3296) 
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1931) 
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1895) 
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:423) 
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) 
at com.ibm.rcp.personality.framework.internal.RCPApplication.run(RCPApplication.java:72) 
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78) 
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92) 
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68) 
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) 
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:615) 
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549) 
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504) 
at org.eclipse.equinox.launcher.Main.run(Main.java:1236) 
at org.eclipse.equinox.launcher.Main.main(Main.java:1212) 
at org.eclipse.core.launcher.Main.main(Main.java:30) 

Спасибо.

1

Это один из симптомов ограничения MAX_PATH в Windows. В нем есть заметки о KB (например, 320081) и несколько обсуждений ручных методов, с которыми можно справиться с этими файлами, которые вы можете легко найти с помощью Google.

Проблема в том, что Windows имеет ограничение на длину полного пути к файлу , используемого в различных системах и вызовах на уровне команд. Несмотря на то, что сообщество пользователей много обсуждает (и даже некоторые новые вещи, чтобы попробовать в Microsoft KB), все они сводятся к тому, что вы сокращаете путь к файлу файла, о котором идет речь, справедливыми средствами или фолом.

В эфире есть некоторые указания в том, что Microsoft Unicode API разрешает (вплоть до) 32k байтовые пути к файлам, хотя я не знаю, является ли это правдой. Однако остается так, что многие существующие программы не используют эти API и, следовательно, попадают под это ограничение. (Возможно даже, что API-интерфейсы Windows используют UTF16 (или UCS2), и в этом случае это означает только 16-значные символы - кто-нибудь знает об этом?)

Система позволяет создавать «недоступные» пути к файлам многими способами -one пошаговое создание шагов в пути путем навигации; другой - монтировать общие ресурсы, а иногда системные функции и утилиты полагаются внутри себя на полный путь к файлу для манипуляций, который падает на это ограничение.

Если это основное глупо ограничение не удаляется из кода системы Windows, единственное средство для вас перемещение и/или переименовывать файлы ...

... или запустить Unix.

 Смежные вопросы

  • Нет связанных вопросов^_^