Java - CLASSPATH 환경 정보(오류및 설정)

Posted 03 3, 2013 13:22, Filed under: Language/JAVA


# Java 컴파일및 실행시 classpath 환경 설정 중요.

# classpath 현재위치( . ) 실행 테스트
옵션 : -cp 와 -classpath 동일

[app@sunshiny classes]$ java -cp . TestMain
[app@sunshiny classes]$ java -classpath . TestMain

# Java 컴파일시 오류
# Java 컴파일시에 import 하는 클래스 파일을 찾지 못하는 증상
TestMain.java:9: error: package kr.sunshiny.util.security does not exist
import kr.sunshiny.util.security.SecurityMgr;


# -sourcepath 옵션에 클래스(classes) 파일의 시작위치를 지정해줌(javac 옵션 정보 확인)
javac -classpath $CLASS_PATH -sourcepath /usr/local/app/classes kr/sunshiny/test/TestMain.java

# Java 실행시 오류

오류: 기본 클래스 TestMain(를) 찾거나 로드할 수 없습니다.

# 필요 라이브러리를 사용자 클래스 패스에 설정을 해놓아도 Java 실행시 클래스파일을 찾지 못하는 증상
[app@sunshiny classes]$ java TestMain
또는
[app@sunshiny classes]$ java -classpath . TestMain
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/common/Common
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2442)
        at java.lang.Class.getMethod0(Class.java:2685)
        at java.lang.Class.getMethod(Class.java:1620)
        at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
Caused by: java.lang.ClassNotFoundException: org.apache.common.Common
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        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:423)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
        ... 6 more


# jar 파일위치 지정 또사용자 프로파일에 설정해둔 환경의 CLASS_PATH 를 명시해줌.
[app@sunshiny classes]$ java -classpath $CLASS_PATH TestMain

- 컴파일 후 해당 위치에서 클래스 파일을 실행할때 이름을 찾지 못하는 증상
[app@sunshiny test]$ java -classpath $CLASS_PATH TestMain
Exception in thread "main" java.lang.NoClassDefFoundError: kr/sunshiny/test/TestMain (wrong name: TestMain)

        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        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:423)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)


# 클래스파일 패키지(classes) 시작 위치로 이동을 한후에 해당 클래스파일을 실행
[app@sunshiny classes]$ java -classpath $CLASS_PATH kr/sunshiny/test/TestMain

# jar 묶음 실행
실행시 Exception in thread "main" java.lang.NoClassDefFoundError 메시가 발생하는 경우는 참조하는 jar 파일을 CLASS_PATH에 추가
# 실행할 jar 묶음 파일을 변수로 설정
[app@sunshiny classes]$ export CLASS_PATH=.:/usr/local/app/TestWork.jar

# 패키지 경로를 포함한 실행 클래스명까지 지정
[app@sunshiny classes]$ java -classpath $CLASS_PATH kr.sunshiny.test.TestWork


# 사용자 프로파일 설정 예
[app@sunshiny classes]$ vi ~/.bash_profile

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

### Java Env
export JAVA_HOME=/usr/local/java/jdk1.7.0_10

### Test Env
export TEST_APP_HOME=/usr/local/app
export TEST_APP_CORE=$TEST_APP_HOME/lib/test_app-core.jar
export MYSQL_DRIVER=$TEST_APP_HOME/lib/mysql-connector-java-5.0.7-bin.jar
예1) export CLASS_PATH=.:$TEST_APP_CORE:$MYSQL_DRIVER:$JAVA_HOME/lib
예2) export CLASS_PATH=/home/webapps/classes/.:$TEST_APP_CORE:$MYSQL_DRIVER:$JAVA_HOME/lib

# 예1) 어느 위치에서나 현재위치에서부터 클래스 파일을 실행하도록 명시하는 부분( . )
# 예2) 어느 위치에서나 특정 디렉토리classes 에서부터 클래스 파일을 실행하고자 할때.
          (스케줄 등록, 스크립트 내에서 활용)

PATH=$PATH:$HOME/bin:$CLASS_PATH:$JAVA_HOME/bin

export PATH


# Java 옵션 정보
[search@sunshiny classes]$ javac
Usage: javac <options> <source files>
where possible options include:
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
  -deprecation               Output source locations where deprecated APIs are used
  -classpath <path>          Specify where to find user class files and annotation processors
  -cp <path>                 Specify where to find user class files and annotation processors
  -sourcepath <path>         Specify where to find input source files
  -bootclasspath <path>      Override location of bootstrap class files
  -extdirs <dirs>            Override location of installed extensions
  -endorseddirs <dirs>       Override location of endorsed standards path
  -proc:{none,only}          Control whether annotation processing and/or compilation is done.
  -processor <class1>[,<class2>,<class3>...]Names of the annotation processors to run; bypasses default discovery process
  -processorpath <path>      Specify where to find annotation processors
  -d <directory>             Specify where to place generated class files
  -s <directory>             Specify where to place generated source files
  -implicit:{none,class}     Specify whether or not to generate class files for implicitly referenced files
  -encoding <encoding>       Specify character encoding used by source files
  -source <release>          Provide source compatibility with specified release
  -target <release>          Generate class files for specific VM version
  -version                   Version information
  -help                      Print a synopsis of standard options
  -Akey[=value]              Options to pass to annotation processors
  -X                         Print a synopsis of nonstandard options
  -J<flag>                   Pass <flag> directly to the runtime system
  -Werror                    Terminate compilation if warnings occur


[app@sunshiny classes]$ java
Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)
where options include:
    -d32          use a 32-bit data model if available
    -d64          use a 64-bit data model if available
    -server       to select the "server" VM
                  The default VM is server.

    -cp <class app path of directories and zip/jar files>
    -classpath <class app path of directories and zip/jar files>
                  A : separated list of directories, JAR archives,
                  and ZIP archives to app for class files.
    -D<name>=<value>
                  set a system property
    -verbose[:class|gc|jni]
                  enable verbose output
    -version      print product version and exit
    -version:<value>
                  require the specified version to run
    -showversion  print product version and continue
    -jre-restrict-app | -jre-no-restrict-app
                  include/exclude user private JREs in the version app
    -? -help      print this help message
    -X            print help on non-standard options
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  enable assertions with specified granularity
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  disable assertions with specified granularity
    -esa | -enablesystemassertions
                  enable system assertions
    -dsa | -disablesystemassertions
                  disable system assertions
    -agentlib:<libname>[=<options>]
                  load native agent library <libname>, e.g. -agentlib:hprof
                  see also, -agentlib:jdwp=help and -agentlib:hprof=help
    -agentpath:<pathname>[=<options>]
                  load native agent library by full pathname
    -javaagent:<jarpath>[=<options>]
                  load Java programming language agent, see java.lang.instrument
    -splash:<imagepath>
                  show splash screen with specified image
See http://java.sun.com/javase/reference for more details.



# Java 컴파일시 인코딩 옵션
javac -encoding UTF-8 -classpath Test.java

# Java 실행시 인코딩 옵션
java -Dfile.encoding=UTF-8 -classpath Test
※ 위 내용은, 여러 자료를 참고하거나 제가 주관적으로 정리한 것입니다.
   잘못된 정보나 보완이 필요한 부분을, 댓글 또는 메일로 보내주시면 많은 도움이 되겠습니다.
03 3, 2013 13:22 03 3, 2013 13:22


Trackback URL : http://develop.sunshiny.co.kr/trackback/860

Leave a comment

« Previous : 1 : ... 152 : 153 : 154 : 155 : 156 : 157 : 158 : 159 : 160 : ... 648 : Next »

Recent Posts

  1. HDFS - Python Encoding 오류 처리
  2. HP - Vertica ROS Container 관련 오류...
  3. HDFS - Hive 실행시 System Time 오류
  4. HP - Vertica 사용자 쿼리 이력 테이블...
  5. Client에서 HDFS 환경의 데이터 처리시...

Recent Comments

  1. Article writing is also a exciteme... 레깅스룸 02 16,
  2. I like reading an article that can... 부산고구려 02 16,
  3. Asking questions are truly nice th... 해운대룸싸롱 02 15,
  4. Pretty! This was an extremely wond... 분당셔츠룸 02 15,
  5. Wonderful beat ! I would like to a... 레깅스룸가격 02 14,

Recent Trackbacks

  1. london relocation ltd london relocation ltd 16 02
  2. extract your knowledge extract your knowledge 16 02
  3. dog cart dog cart 15 02
  4. This Site This Site 15 02
  5. massive action massive action 15 02

Calendar

«   02 2020   »
            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

Bookmarks

  1. 위키피디아
  2. MysqlKorea
  3. 오라클 클럽
  4. API - Java
  5. Apache Hadoop API
  6. Apache Software Foundation
  7. HDFS 생태계 솔루션
  8. DNSBL - Spam Database Lookup
  9. Ready System
  10. Solaris Freeware
  11. Linux-Site
  12. 윈디하나의 솔라나라

Site Stats

TOTAL 2846555 HIT
TODAY 117 HIT
YESTERDAY 544 HIT