프로젝트를 생성하기에 앞서 자이썬(Jython)을 다운받아줍니다.

자이썬(Jython)이란 자바 플랫폼용 파이썬, 즉 자바 언어로 만들어진 파이썬(Python)이라고 생각하시면 되겠습니다.

다운로드 주소 : http://www.jython.org/downloads.html





이제 다운받은 JAR파일을 자바 프로젝트에 추가시켜 줍시다.

프로젝트 파일을 생성 후 Build Path -> Configure Build Path... 를 클릭해 줍니다.




Java Build Path의 Libraries에서 Add External JARs...를 클릭하여 자이썬 홈페이지에서 다운받은 자이썬 JAR파일을 선택 후 Apply and Close 버튼을 눌러줍니다.




코드를 작성해 봅시다.

자이썬은 파이썬 코드와 자바 코드를 함께 사용할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import org.python.util.PythonInterpreter;
 
public class main {
 
    private static PythonInterpreter interpreter;
 
    public static void main(String[] args) {
 
        interpreter = new PythonInterpreter();
        interpreter.exec("from java.lang import System");
        interpreter.exec("s = 'Hello World'");
        interpreter.exec("System.out.println(s)");
        interpreter.exec("print(s)");
        interpreter.exec("print(s[1:-1])");
 
    }
 
}
cs




해당 코드를 실행시켜보면 이렇게 결과값이 출력되는걸 확인할 수 있습니다.




이제 파이썬 파일을 불러오기위해 간단한 파이썬 프로그램을 만들어 보겠습니다.

저는 메모장을 통해 두 수를 입력받아 더해주는 sum 함수를 만들어 보았습니다.

저장할 때는 파일 형식을 모든 파일로, 인코딩은 UTF-8로 바꿔주었습니다.




이제 자바에서 소스코드를 작성해 봅시다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import org.python.util.PythonInterpreter;
 
public class main {
 
    private static PythonInterpreter interpreter;
 
    public static void main(String[] args) {
 
        interpreter = new PythonInterpreter();
        interpreter.execfile("test.py");
        interpreter.exec("print(sum(7,8))");
 
    }
 
}
cs




실행시켜보니 7과 8을 더한 15가 정상적으로 출력되는 모습을 볼 수 있습니다.




Error code : console: Failed to install '': java.nio.charset.UnsupportedCharsetException: cp0.

혹시 위와 같은 에러가 발생하시면 Run > Run Configurations > Arguments에 들어가셔서 환경변수에 -Dpython.console.encoding=UTF-8를 추가해주시면 되겠습니다.






조건문을 이용하여 간단한 자판기 프로그램을 만드는 예제입니다.


Q. 금액을 입력하고 메뉴를 고른 뒤 잔돈을 출력하는 프로그램입니다.

잔돈을 줄 때 천원, 오백원, 백원짜리 몇개를 줘야하는지 계산하여 출력하세요.

입력한 금액이 선택한 메뉴의 가격보다 부족하면 돈이 부족하다는 문장을 출력하세요.


실행 결과



if문을 이용한 정답 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        int money, choice, change = 0// 넣은 금액, 메뉴 선택, 잔돈
        int cola = 800// 콜라
        int water = 500// 생수
        int vitaminWater = 1500// 비타민워터
        int oneThousandWon, fiveHundredWon, oneHundredWon = 0// 천원, 오백원, 백원
        
        // 금액 입력
        System.out.println("금액을 입력하세요.");
        money = sc.nextInt();
        
        // 메뉴 입력
        System.out.println("메뉴를 고르세요");
        System.out.print("1.콜라(800원) 2.생수(500원) 3.비타민워터(1500원) >> ");
        choice = sc.nextInt();
 
        // 메뉴 선택 후 잔돈 구하기, 돈이 부족한지 확인
        if (choice==1 && money>cola) {
            change = money - cola;
        } else if (choice==2 && money>water) {
            change = money - water;
        } else if (choice==3 && money>vitaminWater) {
            change = money - vitaminWater;
        } else {
            change = money;
            System.out.println("돈이 부족해요 ㅠㅠ");
        }
        
        System.out.println("잔돈 : " + change + "원");
        
        oneThousandWon = change/1000;
        fiveHundredWon = change%1000/500;
        oneHundredWon = change%1000%500/100;
        System.out.print("천원 : " + oneThousandWon + "개, " );
        System.out.print("오백원 : " + fiveHundredWon + "개, ");
        System.out.println("백원 : " + oneHundredWon + "개");
        
    }
 
}
cs




switch문을 이용한 정답 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
 
        // 자판기 프로그램
        
        // 사용자 금액, 메뉴, 음료가격 변수
        int inMoney=0;
        int menuNum=0;
        int price=0;
        
        // 천원, 오백원, 백원 변수
        int m1000=0;
        int m500=0;
        int m100=0;
        
        Scanner sc = new Scanner(System.in);
        
        System.out.println("금액을 입력하시오.");
        inMoney = sc.nextInt();
        
        System.out.println("메뉴를 고르세요");
        System.out.print("[1] 콜라(800원) [2] 생수(500원) [3] 비타민워터(1500원) >> ");
        menuNum = sc.nextInt();
        
        switch (menuNum) {
        case 1:
            price = 800;
            break;
        case 2:
            price = 500;
            break;
        case 3:
            price = 1500;
            break;
        default:
            System.out.println("해당 메뉴는 없습니다.");
            break;
        }
        
        // 입력한 금액이 음료 가격보다 작은지 판별
        if (inMoney<price) {
            System.out.println("돈이 부족해요 ㅠ.ㅠ");
        } else {
            inMoney -= price;
        }
        
        System.out.println("잔돈 : " + inMoney);
        
        // 천원, 오백원, 백원 개수 구하기
        m1000 = inMoney/1000;
        inMoney %= 1000;
        m500 = inMoney/500;
        inMoney %= 500;
        m100 = inMoney/100;
        
        System.out.println("천원 : " + m1000 + "개, 오백원 : " + m500 + "개, 백원 : " + m100 + "개");
        
    }
 
}
 

cs


MariaDB Connector 다운로드

먼저 MariaDB Connector 파일의 다운을 위해 아래 링크 사이트로 이동합니다.

https://downloads.mariadb.org/connector-java/

이동 후 다운로드 버튼을 눌러줍니다.




MariaDB Connector/J .jar files 를 클릭해줍니다.




mariadb-java-client-2.2.5.jar 을 클릭하여 다운로드해줍니다.

버전은 시간이 지남에 따라 바뀔 수 있습니다.




이클립스에서 jar파일 불러오기

MariaDB를 연결할 프로젝트에 마우스 오른쪽 버튼 -> Build Path -> Configure Build Path 로 들어가 줍니다.





Java Build Path -> Libraries -> Modulepath -> AddExternal JARS... 을 클릭하여 위에서 다운로드 받은 JAR파일 선택해줍니다.




Modulepath에 mariadb jar 파일이 잘 들어온걸 확인하고 Apply and Close를 눌러 적용시켜 창을 닫아줍니다.




이클립스에서 MariaDB에 연결하는 코드 작성하기

아이피주소, dbName, userId, userPassword 를 바꿔주시고 실행하시면 됩니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
 
public class DBcon {
    String driver = "org.mariadb.jdbc.Driver";
    Connection con;
    PreparedStatement pstmt;
    ResultSet rs;
 
    public DBcon() {
         try {
            Class.forName(driver);
            con = DriverManager.getConnection(
                    "jdbc:mariadb://127.0.0.1:3306/dbName",
                    "userId",
                    "userPassword");
            
            if( con != null ) {
                System.out.println("DB 접속 성공");
            }
            
        } catch (ClassNotFoundException e) { 
            System.out.println("드라이버 로드 실패");
        } catch (SQLException e) {
            System.out.println("DB 접속 실패");
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args){
        DBcon dbcon    = new DBcon();
    }
}
cs




에러 방생 시 해결 방법

드라이버 로드 실패

jar 파일을 잘 가져왔는지, 다른 파일을 다운받거나 하지 않았는지 확인해주세요.



DB 접속 실패

java.sql.SQLNonTransientConnectionException : 

포트번호가 잘못되었을 때 발생하는 에러입니다. 포트 번호에 3306을 적으셨는지 확인해주시고,

3306 포트가 열려있는지 확인해주시면 되겠습니다.

리눅스 열린 포트 확인 : http://thisisspear.tistory.com/6?category=807970


java.sql.SQLInvalidAuthorizationSpecException :

id, pw를 확인하여 주시고 혹시 로그인을 시도하는 id가 루트 계정이 아닌지 확인해주시기 바랍니다.

루트계정으론 로그인이 불가능합니다.




JDK(Java Development Kit, 자바 개발 도구)

자바 개발자에게 무료로 배포하는 소프트웨어로, 자바프로그래밍을 할 때 필요한 컴파일러 등이 포함됐다. JDK내에 JRE도 포함되어 있기에 JDK만 설치하면 JRE도 설치된다.


JRE(Java Runtime Environment, 자바 실행 환경)

자바를 실행시킬 수 있는 자바환경, 자바 프로그램을 실행하기위한 라이브러리 파일들과 자가 가상 기계를 포함한다.


다운로드 주소 - http://www.oracle.com/technetwork/java/javase/downloads/index.html



+ Recent posts