Я застрял. Я не могу понять, что заставляет меня получать ошибки «Неразрешенные требования: Требовать-Возможность» для пакета SWT (и другие, если я копаю глубже). Требования, предъявляемые к нему: win32 os и ws и arch x86_64, все из которых кажутся, что они должны быть удовлетворены моей системой. Я включил детали ниже и обновляю детали, которые запрашивают все.Плагин Eclipse, SWT «Неразрешенные требования: Требование-Возможность»
Предпосылки и проблемы Детали
Я работаю на плагин проекта Eclipse, который не был экспортируемой в течение длительного времени. Он был обновлен с Java 7 до 8 и с Juno до Mars, начиная с последней версии. На прошлой неделе я пошел на выпуск новой версии, используя мастер экспорта продуктов Eclipse в файле .product. Предыдущие выпуски были прекрасны. Запуск проекта из Eclipse отлично работает (используя контекстное меню файла продукта «Запустить As-> Eclipse», чтобы создать конфигурацию запуска). Использование функции Validate Plug-ins, видимой как в конфигурации .product, так и в запуске, не вызывает проблем.
The бревенчатых показывает следующее:
!SESSION 2016-08-05 09:50:28.847 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.8.0_101
java.vendor=Oracle Corporation
BootLoader constants: OS=${target.os}, ARCH=${target.arch}, WS=${target.ws}, NL=en_US
Framework arguments: -enableassertions
Command-line arguments: -os ${target.os} -ws ${target.ws} -arch ${target.arch} -clean -consoleLog -enableassertions -console
!ENTRY org.eclipse.osgi 4 0 2016-08-05 09:50:30.975
!MESSAGE An error occurred while automatically activating bundle org.eclipse.ui.workbench (96).
!STACK 0
org.osgi.framework.BundleException: Error starting module.
at org.eclipse.osgi.container.Module.doStart(Module.java:580)
...
Caused by: java.lang.NoClassDefFoundError: org/eclipse/swt/SWTError
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.eclipse.osgi.internal.framework.BundleContextImpl.loadBundleActivator(BundleContextImpl.java:755)
at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:706)
at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:941)
at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:318)
at org.eclipse.osgi.container.Module.doStart(Module.java:571)
... 42 more
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.SWTError cannot be found by org.eclipse.ui.workbench_3.107.0.v20150825-2206
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:439)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:352)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:344)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 51 more
Root exception:
java.lang.NoClassDefFoundError: org/eclipse/swt/SWTError
...
!ENTRY org.eclipse.osgi 4 0 2016-08-05 09:50:30.988
!MESSAGE An error occurred while automatically activating bundle ca.uvic.chisel.atlantis (2).
!STACK 0
org.osgi.framework.BundleException: Error loading bundle activator.
at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:711)
etc etc...
У меня есть доступ к OSGi консоли, и получили больше информации:
osgi> ss org.eclipse.swt
"Framework is launched."
id State Bundle
82 RESOLVED org.eclipse.swt_3.104.1.v20150825-0743
113 INSTALLED org.eclipse.swt.win32.win32.x86_64_3.104.1.v20150825-0743
osgi> diag 113
org.eclipse.swt.win32.win32.x86_64 [113]
Unresolved requirement: Require-Capability: eclipse.platform; filter:="(& (osg
i.ws=win32) (osgi.os=win32) (osgi.arch=x86_64))"
`` `
Некоторые более подробная информация о SWT в моей системе ... экспортированное приложение имеет «/plugins/org.eclipse.swt.win32.win32. x86_64_3.104.1.v20150825-0743.jar ", которая является той же версией, указанной в записи org.eclipse.swt.win32.win32.x86_64 в config-файлах« Plug-ins and Fragments »файла .product. (Существует также org.eclipse.swt_3.104.1.v20150825-0743.jar и соответствие org.eclipse.swt). Требования к фрагменту пакета отмечены в результатах консоли osgi, а именно: «(& (osgi.ws = win32) (osgi.os = win32) (osgi.arch = x86_64))».
В предыдущем (функционирующем) выпуске из моих архивов, я вижу, что у него есть org.eclipse.swt.win32.win32.x86_64_3.100.1.v4234e.jar. Я не знаю, были ли тогда требования к фрагменту пакета одинаковыми или разными. У меня нет доступа к консоли osgi в этой версии, потому что я тогда не включал в нее необходимые библиотеки.
Рассматривая другие пучки, я видел некоторые, которые также не имеют статуса RESOLVED.
Контекст развития
Я разрабатываю, экспорт и запуск проекта на Windows, 7. My JRE System Library для разработчика является jre1.8.0_101-b13. Это та же версия (тот же путь к файлу), что и JRE для запуска приложений Java.
C:\Atlantis Export\Atlantis 0.3.0 TEST 3>java -XshowSettings:properties -version
Property settings:
awt.toolkit = sun.awt.windows.WToolkit
file.encoding = Cp1252
file.encoding.pkg = sun.io
file.separator = \
java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironment
java.awt.printerjob = sun.awt.windows.WPrinterJob
java.class.path = .
java.class.version = 52.0
java.endorsed.dirs = C:\Program Files\Java\jre1.8.0_101\lib\endorsed
java.ext.dirs = C:\Program Files\Java\jre1.8.0_101\lib\ext
C:\Windows\Sun\Java\lib\ext
java.home = C:\Program Files\Java\jre1.8.0_101
java.io.tmpdir = C:\Users\eric\AppData\Local\Temp\
java.library.path = C:\ProgramData\Oracle\Java\javapath
C:\Windows\Sun\Java\bin
C:\Windows\system32
C:\Windows
C:\ProgramData\Oracle\Java\javapath
C:\Windows\system32
C:\Windows
C:\Windows\System32\Wbem
C:\Windows\System32\WindowsPowerShell\v1.0\
C:\Program Files (x86)\pgmodeler
C:\WinPython-64bit-3.4.3.5\python-3.4.3.amd64
%USERPROFILE%\.dnx\bin
C:\Program Files\Microsoft DNX\Dnvm\
C:\Program Files\nodejs\
C:\Program Files (x86)\Skype\Phone\
C:\Windows\System32\WindowsPowerShell\v1.0\
C:\Program Files\010 Editor
C:\Users\eric\AppData\Roaming\npm
.
java.runtime.name = Java(TM) SE Runtime Environment
java.runtime.version = 1.8.0_101-b13
java.specification.name = Java Platform API Specification
java.specification.vendor = Oracle Corporation
java.specification.version = 1.8
java.vendor = Oracle Corporation
java.vendor.url = http://java.oracle.com/
java.vendor.url.bug = http://bugreport.sun.com/bugreport/
java.version = 1.8.0_101
java.vm.info = mixed mode
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
java.vm.specification.name = Java Virtual Machine Specification
java.vm.specification.vendor = Oracle Corporation
java.vm.specification.version = 1.8
java.vm.vendor = Oracle Corporation
java.vm.version = 25.101-b13
line.separator = \r \n
os.arch = amd64
os.name = Windows 7
os.version = 6.1
path.separator = ;
sun.arch.data.model = 64
sun.boot.class.path = C:\Program Files\Java\jre1.8.0_101\lib\resources.jar
C:\Program Files\Java\jre1.8.0_101\lib\rt.jar
C:\Program Files\Java\jre1.8.0_101\lib\sunrsasign.jar
C:\Program Files\Java\jre1.8.0_101\lib\jsse.jar
C:\Program Files\Java\jre1.8.0_101\lib\jce.jar
C:\Program Files\Java\jre1.8.0_101\lib\charsets.jar
C:\Program Files\Java\jre1.8.0_101\lib\jfr.jar
C:\Program Files\Java\jre1.8.0_101\classes
sun.boot.library.path = C:\Program Files\Java\jre1.8.0_101\bin
sun.cpu.endian = little
sun.cpu.isalist = amd64
sun.desktop = windows
sun.io.unicode.encoding = UnicodeLittle
sun.java.launcher = SUN_STANDARD
sun.jnu.encoding = Cp1252
sun.management.compiler = HotSpot 64-Bit Tiered Compilers
sun.os.patch.level = Service Pack 1
sun.stderr.encoding = cp437
sun.stdout.encoding = cp437
user.country = US
user.dir = C:\Atlantis Export\Atlantis 0.3.0 TEST 3
user.home = C:\Users\eric
user.language = en
user.name = eric
user.script =
user.timezone =
user.variant =
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
Я пробовал модернизировать снова с Марса, до Неона. Это ничего не решило. Переход на Juno, чтобы исправить что-то подобное, пахнет неправильным решением.