Ошибка: не Может найти общий суперкласс

Я пытаюсь обработать с Прозащитой настольную заявку MS Windows (Java 6 SE с помощью lib SWT, обеспеченного Eclipse). И я получаю следующую критическую ошибку:

Unexpected error while performing partial evaluation:
Class = [org/eclipse/swt/widgets/DateTime]
Method = [<init>(Lorg/eclipse/swt/widgets/Composite;I)V]
Exception = [java.lang.IllegalArgumentException] (Can't find common super class of [java/lang/StringBuffer] and [org/eclipse/swt/internal/win32/TCHAR])
Error: Can't find common super class of [java/lang/StringBuffer] and [org/eclipse/swt/internal/win32/TCHAR]
----------------------------

Когда я попробовал к Google ошибку, он вышел только на двух местах во всей сети, которая удивила меня значительно. Я - новичок, использующий Прозащиту и инструменты оптимизации кода Java вообще. Будут цениться любые мысли и предложения, как зафиксировать это.Заранее спасибо.

Выше ошибки теперь фиксируется, с использованием "-dontskipnonpubliclibraryclasses"

- заключительное обновление:

Я все еще получаю другую ошибку теперь. Целый вывод является теперь следующим:

D:\eclipse_projs\java_obfuscate\gci>gci.bat
ProGuard, version 4.4
Reading program jar [D:\eclipse_projs\java_obfuscate\gci\gci.jar]
Reading library jar [D:\jre1.6.0_07\lib\rt.jar]
Unexpected error while evaluating instruction:
  Class       = [org/eclipse/swt/widgets/Synchronizer]
  Method      = [runAsyncMessages(Z)Z]
  Instruction = [60] aload_1 v1
  Exception   = [java.lang.IllegalArgumentException] (Value is not a reference value [proguard.evaluation.value.UnknownIntegerValue])
Unexpected error while performing partial evaluation:
  Class       = [org/eclipse/swt/widgets/Synchronizer]
  Method      = [runAsyncMessages(Z)Z]
  Exception   = [java.lang.IllegalArgumentException] (Value is not a reference value [proguard.evaluation.value.UnknownIntegerValue])
 Error: Value is not a reference value [proguard.evaluation.value.UnknownIntegerValue]

D:\eclipse_projs\java_obfuscate\gci>

Это - проблема, которую я не могу понять наверняка :( любая справка будет очень цениться.

Опции, которые я использую, следующие:

-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-optimizationpasses 3
-overloadaggressively
-repackageclasses ''
-allowaccessmodification
-dontnote
11
задан PatlaDJ 7 April 2010 в 11:15
поделиться

2 ответа

Попробуйте удалить параметр -dontnote . У вас могут быть повторяющиеся определения, о которых вы не получаете предупреждений, или, возможно, вы игнорируете предупреждения.

0
ответ дан 3 December 2019 в 10:25
поделиться

Попробуйте добавить параметр -dontskipnonpubliclibraryclasses в командную строку.

Из руководства Proguard :

Ограничения

Для повышения эффективности ProGuard всегда игнорирует любые закрытые или видимые классы библиотеки пакетов, в то время как чтение банок библиотеки. Если какой-либо из них расширен классами публичной библиотеки , а затем снова расширен входными классами, ProGuard пожалуется , что не сможет их найти. В этом случае вам придется использовать параметр -dontskipnonpubliclibraryclasses и, возможно, даже параметр -dontskipnonpubliclibraryclassmembers вариант. В графическом интерфейсе пользователя есть флажки для этих настроек.
7
ответ дан 3 December 2019 в 10:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: