'Open Source/Java'에 해당되는 글 6건

  1. 2012.10.30 Java Jni C Makefile
  2. 2011.05.19 Looper, Thread, Handler 의 관계!!
  3. 2009.01.24 Tokenizer를 이용한 String 잘라 내기

Java Jni C Makefile

|

컴파일러 환경은 Sun Unix Spark cc 기준


환경이 다를 경우 

CC 의 컴파일러 변경

INC의 java include 위치 변경

CFLAGS 의 옵션변경

Lib 생성시 -G 옵션을 해당 컴파일러 옵션에 맞겨 변경


Makefile

.SUFFIXES: .c .o

.java .class

CC                 = cc

JC                 = javac

INC                = -I/usr/java/include -I/usr/java/include/solaris


SRCS = Source.c

OBJS = $(SRCS:.c=.o) 


JAVASRC = Package/Source.java

CLASS = $(JAVASRC:.java=.class) 

CFLAGS = -g -c

JFLAGS = -g


.c.o:

$(CC) $(INC) $(CFLAGS) $<

.java.class:

$(JC) $(JFLAGS) $<


all : 

JniLib : $(OBJS)

$(CC) -G $(OBJS) -o libShmData.so


JavaCls : $(CLASS)


clean : 

rm -rf $(OBJS)


Lib Compile시 오류가 날 경우 LD_LIBRARY_PATHCLASSPATH 를 export로 확인 후 재 컴파일


jni로 C Header File을 작성 할 경우 Command


javah -jni Packge.Class 


여기서 주의 해야 할 점은 Java 컴파일러로 Class File을 생성시에는 Package/JavaSourceFile.java 형태를 띄지만 javah로 Header File 작성시에는 Package.JavaClass 형태라는 것이다.


And

Looper, Thread, Handler 의 관계!!

|

그래 이거얏!!
And

Tokenizer를 이용한 String 잘라 내기

|

/*

문자열 형식

"201 Data_for_Client"

  ID     Data

이둘을 분리해줌..

통신을 위한 Data형식을 맞춤

*/ 

import java.util.StringTokenizer;

public class TkenTest {
 private StringTokenizer token;
 private String ClientData[];
 private int DataID[];
 private int DataCount;
 
 public TkenTest(String FullData)
 {
  token = new StringTokenizer(FullData," ");//data형식 정의
  this.DataCount = (token.countTokens()/2);
  init();//초기화
 }
 private void init()
 {
  //인수 셋팅
  this.ClientData = new String[this.DataCount];
  this.DataID = new int [this.DataCount];
  
  int i = 0;
  String temp[]= new String[token.countTokens()];
  while(token.hasMoreTokens())
  {
   temp[i] = token.nextToken();
   i++;
  }
  
  int j = 0;//배열지정 인수
  for(i=0;i<=DataCount;i+=2)
  {
   DataID[j] = Integer.parseInt(temp[i]);
   j++;
  }
  j=0;//초기화
  
  for(i=1;i<=(DataCount+1);i+=2)
  {
   this.ClientData[j] = temp[i];
   j++;
  }
 }
 public int getDataCount()
 {
  return this.DataCount;
 }
 
 public int getDataID(int ID)
 {
  if(ID>this.DataCount)
   return -1;//오류메시지 출력
  else
   return this.DataID[ID-1];
 }
 public String getData(int ID)
 {
  if(ID>this.DataCount)
   return null;//오류메시지 출력
  else
   return this.ClientData[ID-1];
 }
}

And
prev | 1 | 2 | next