1. Java / Говнокод #12497

    +79

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    public static void loadSWT() {
    		try {
    			File file = null;
    			if (PlatformUtils.IS_WINDOWS) {
    				file = new File("lib/swtwin32.jar"); // x86
    				if (PlatformUtils.JVM_ARCH.equals("64")) {
    					file = new File("lib/swtwin64.jar"); // x64
    				}
    			} else if (PlatformUtils.IS_OSX) {
    				file = new File("lib/swtmac32.jar"); // x86
    				if (PlatformUtils.JVM_ARCH.equals("64")) {
    					file = new File("lib/swtmac64.jar"); // x64
    				} else if (PlatformUtils.OS_ARCH.startsWith("ppc")) {
    					file = new File("lib/swtmaccb.jar"); // carbon
    				}
    			} else if (PlatformUtils.IS_LINUX) {
    				file = new File("lib/swtlin32.jar"); // x86
    				if (PlatformUtils.JVM_ARCH.equals("64")) {
    					file = new File("lib/swtlin64.jar"); // x64
    				}
    			}
    			if ((file == null) || !FileUtils.isExistingFile(file)) {
    				file = new File("lib/swt.jar"); // old system
    			}
    			final Method method = URLClassLoader.class.getDeclaredMethod(
    					"addURL", new Class[] { URL.class });
    			method.setAccessible(true);
    			method.invoke(ClassLoader.getSystemClassLoader(), file.toURI()
    					.toURL());
    		} catch (final Exception e) {
    			e.printStackTrace();
    		}
    	}

    вот так приколачиваем SWT в систему.
    особенное веселье в строках 25-28.

    Запостил: Lure Of Chaos, 29 Января 2013

    Комментарии (8) RSS

    • > method.setAccessible(true);
      Круто! Этот чит еще и недокументированный?

      P.S. Установка classpath из внешней обертки нынче не в моде?
      Ответить
      • все документировано, но явно нарушает инкапсуляцию
        http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/reflect/AccessibleObject.html#setAccessible(boolean)


        таки лучше было бы сразу в classpath кидать, но нет же...
        Ответить
        • > 1.4.2
          Вот любит гугл эту древнюю доку. Всегда мне ее подсовывает вместо свежих.
          Ответить
          • Ибо канон жабы. Без женериков и прочей ереси в виде аннотаций.
            Можно без проблем собрать совместимый байт-код вплоть до 1.0
            Ответить
    • Используйте JNLP и будет вам щщастье!
      Ответить
      • Java Neuro-Linguistic Program?
        Ответить
        • Java Web Start.

          Там есть способ подключения разных нативных библиотек для разных платформ.
          Ответить
      • зачетно пошутил +1
        Ответить

    Добавить комментарий