반응형

OS: Windows 8.1 (64-bit)

Java: 1.8.0_60

Eclipse: Mars (64-bit)

프로젝트가 사용하는 JRE System Library: JavaSE-1.7



이클립스에서 프로젝트를 Export 명령으로 Runnable JAR 파일을 만들고 다른 환경(예를 들면 리눅스가 돌아가는 보드PC 같은 곳)에서 실행하려고 했는데 다음과 같은 에러가 발생했다:




Exception in thread "main" java.lang.UnsupportedClassVersionError: [실행하려는 클래스 이름] : Unsupported major.minor version 52.0

        at java.lang.ClassLoader.defineClass1(Native Method)

        at java.lang.ClassLoader.defineClass(ClassLoader.java:788)

        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14                                                                    2)

        at java.net.URLClassLoader.defineClass(URLClassLoader.java:447)

        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)

        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)

        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

        at java.security.AccessController.doPrivileged(Native Method)

        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)

        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)



일단 .jar 파일을 돌리려는 대상 보드PC (Odroid)에 설치된 자바는 OpenJDK고 버전이 1.7.0_25다.
이클립스 프로젝트에서 JRE 라이브러리는 비록 1.7로 되어 있었지만, 이클립스가 실제로 사용하는 컴파일러는 1.8로 되어 있었기에 빌드한 버전이 맞지 않아서 생기는 문제였다.

해결하려면 Window > Preferences 에 가서,
Java > Compiler를 선택하고, 오른쪽에 보이는 화면에서 Compiler compliance level을 1.7로 설정한다.


그러면 현재 프로젝트들을 모두 새로 빌드할 것이다.
그 뒤에 다시 Runnable JAR 파일을 만들어서 실행하면 될 것이다.



반응형
블로그 이미지

Bryan_

,
반응형

Tested device: Raspberry Pi 2 (model B)

OpenWrt version: 15.05 (Chaos Calmer)


라즈베리파이에서 이더넷 포트를 외부 인터넷 접속용 wan 인터페이스로 변경해서 연동했더니, LuCI 웹 인터페이스에 접근하지 못할 뿐만 아니라 SSH 접속도 막히게 되었다. 즉, 외부 인터넷에서 SSH(포트 22)와 LuCI(포트 80) 접속이 기본적으로 막혀 있다. 이것은 비단 라즈베리파이 뿐만 아니라 모든 OpenWRT 라우터에 해당된다.

애초에 이더넷 포트를 wan으로 연결하기 전에 LuCI의 System > Administration 페이지에서 "Allow  remote hosts to connect to local SSH forwarded ports" 옵션에 체크를 했지만 기대하던 대로 작동하지 않았다.


이 경우는 /etc/config/firewall 파일을 수정해서 쉽게 해결할 수 있다.


/etc/config/firewall 파일에 아래 내용을 추가해 준다.

# for SSH access

config rule

option src 'wan'

option proto tcp

option dest_port '22'

option target 'ACCEPT'


# for LuCI webpage access

config rule

option src 'wan'

option proto tcp

option dest_port '80'

option target 'ACCEPT'


만약 SSH와 웹 인터페이스의 포트 번호가 다르게 설정되어 있다면 22, 80 대신 해당하는 포트번호를 입력한다.


파일을 저장하고 나서 아래와 같이 firewall을 재시작하고 나면 외부 접속이 가능해진다.

root@OpenWrt:~# /etc/init.d/firewall restart




반응형
블로그 이미지

Bryan_

,
반응형

Target: Raspberry Pi 2, Type B

OS: OpenWRT 15.05 Chaos Calmer


라즈베리파이에 OpenWRT 이미지가 flash된 SD카드를 넣고 맨 처음 부팅을 하면, 네트워크와 관련해서 두 가지 문제점이 있다. 첫번째는 유선랜(Ethernet)이 DHCP client가 작동하지 않아서 랜선을 공유기에 꽂아도 IP주소를 받지 않는 것이고, 두번째는 USB 무선랜 카드(wireless interface card)를 꽂아도 (device driver가 있다는 가정 하에) 인식은 되지만 네트워크 설정이 없는 것이다.


첫번째 유선랜 문제는 OpenWRT 공식 사이트에 있는 라즈베리파이 설명 페이지의 맨 아래쪽 "How to connect via Ethernet"을 참고하면 된다 [1]. 랜선으로 연결이 안되므로 직접 HDMI 케이블과 모니터, USB 키보드를 사용하거나, Serial 케이블 등을 이용해야 한다.


두번째 문제는 /etc/config/wireless 파일이 아예 없어서 어떻게 세팅해야 될 지 모르는 상황에 대한 것이다.

해당 파일이 없으면 심지어 LuCI 웹페이지에서도 "Network > Wifi" 메뉴가 보이지 않아서 설정이 불가능하다.

이와 같이 USB 무선랜카드는 인식이 되지만(dmesg, iw list 등을 실행해 보면 알 수 있다) 설정을 못하겠는 경우에는 아래와 같은 명령으로 wireless 설정 파일을 만들어 주면 된다 [2].


# wifi detect > /etc/config/wireless



<참고자료>

[1] http://wiki.openwrt.org/toh/raspberry_pi_foundation/raspberry_pi#how_to_connect_via_ethernet

[2] https://forum.openwrt.org/viewtopic.php?id=24079



반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu Desktop 14.04.2 LTS (amd64)


우분투에서 .sh 파일을 더블클릭했을 때 실행되는 대신 gedit 텍스트 편집기가 뜬다면 dconf-editor로 설정을 변경한다.

우선 dconf-editor 설치가 되어 있어야 한다.


콘솔에서 dconf-editor 를 실행하고,
org > gnome > nautilus > preferences 선택한 다음,
오른쪽에서 executable-text-activation 항목이 display로 되어 있는 것을 "launch"로 변경한다.


만약 그때그때 실행하거나 텍스트 파일 편집 목적이 다를 경우에는 "ask"를 선택한다.

dconf-editor를 종료하고 (별도의 저장 명령이 없으므로 그냥 종료하면 됨) .sh 파일을 더블클릭해 보면 실행여부 확인이 가능하다.





반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu Desktop 14.04.2 LTS (amd64)

FreeRDP: 1.1.0-beta-2013071101


<NOTE> 

2016.08.24 현재 한영키 문제는 github에 있는 FreeRDP의 가장 최신 소스코드에서 해결되었다.

따라서 더이상 아래와 같이 굳이 베타 버전을 가져와서 직접 수정할 필요가 없게 되었다.

(다만 그 대신 최신 버전에서 전체화면 모드가 출력이 잘 안되는 듯한 버그가 있어 보이지만...)


* FreeRDP github 주소: https://github.com/FreeRDP/FreeRDP



FreeRDP는 현재 최신 버전(1.1.0-beta)에서도 한영키와 한자키가 작동하지 않는다.

한영키를 누르면 "Unknown key with X keycode 0x82", 

한자키를 누르면 "Unknown key with X keycode 0x83"

이러한 에러 메세지가 콘솔창에 표시된다.


FreeRDP의 최신 버전을 소스코드 컴파일을 통해서 설치했기 때문에 소스코드를 확인한 결과, 프로그램이 자체적으로 키보드 입력을 RDP keycode로 변환하는 과정에서 한영키와 한자키는 매핑된 키 정보가 없어서 키 입력이 누락되는 것이었다. 따라서 한영키와 한자키 입력에 대해서 올바른 RDP keycode 매핑이 있도록 연결만 해 주면 정상적으로 작동한다.

이를 위해 소스코드를 아래와 같이 고쳐 준다.


대상 파일: libfreerdp/locale/keyboard_xkbfile.c (line 51)

XKB_KEY_NAME_SCANCODE XKB_KEY_NAME_SCANCODE_TABLE[] =

{

{ "BKSP", RDP_SCANCODE_BACKSPACE},

{ "TAB", RDP_SCANCODE_TAB},

{ "RTRN", RDP_SCANCODE_RETURN}, // not KP

{ "LFSH", RDP_SCANCODE_LSHIFT},

...


위와 같이 51라인 쯤에 있는 XKB_KEY_NAME_SCANCODE_TABLE 배열에 아래 두 항목을 추가한다.

{ "HNGL", RDP_SCANCODE_KANA_HANGUL},

{ "HJCV", RDP_SCANCODE_HANJA_KANJI}


keyboard_xkbfile.c 소스코드 파일:

keyboard_xkbfile.c



혹시 freerdp (xfreerdp)가 실행중이면 종료한 다음, 소스코드 최상위 폴더로 가서 아래와 같이 새로 빌드하고 설치한다.

$ make

$ sudo make install


(참고) FreeRDP 소스코드에서 설치하는 방법: http://skylit.tistory.com/158


다시 freerdp (xfreerdp)를 실행하면 한영키, 한자키가 작동할 것이다.

$ xfreerdp /u:사용자계정 /v:원격컴퓨터주소:포트번호




반응형
블로그 이미지

Bryan_

,