>  기사  >  Java  >  Java Resource 경로 배치에 대한 자세한 설명

Java Resource 경로 배치에 대한 자세한 설명

黄舟
黄舟원래의
2017-03-17 10:22:192140검색

이 글에서는 주로 Java Resource 경로 정렬 및 요약을 소개합니다. 도움이 필요한 친구는

Java Resource 경로

먼저, Java에는 표준 상대 경로가 없습니다. 리소스를 얻기 위한 다양한 상대 경로가 특정 규칙에 따라 절대 경로로 변환됩니다.


그리고 또한 매우 중요합니다. 절대 절대 경로를 직접 사용하지 마십시오. 그렇지 않으면 보기 흉할 것입니다


위의 두 가지 점을 바탕으로 리소스 경로 문제는 한 가지 점으로 요약될 수 있습니다. 기준점을 찾으십시오. 즉, 특정 환경(web, j2ee 또는 jar 패키지 등)에서 적절한 방법을 통해 안정적인 기준점을 찾은 후, 이 기준점을 통해 원하는 리소스를 찾습니다.


기준점이 무엇인가요? 자바에서는? 대략적으로 정리하면 다음과 같습니다.


1) classpath


찾는 리소스가 classpath 아래에 있으면 classpath를 사용하는 것이 더 적절합니다. classpath를 기준점으로 하고, 이 기준점을 얻는 주요 방법은 ClassLoader.getResource(

String name)을 사용하는 것입니다.

  1. Thread.currentThread().getContextClassLoader()

  2. clazz.getClassLoader()

  3. ClassLoader.getSystemClassLoader()


리소스를 찾기 위한 ClassLoader의 구현 원칙은 먼저 상위 classLoader의 클래스 경로에서 리소스를

재귀적으로 로드하는 것입니다(어떻게 결국 JDK를 로드하는 것은 오픈 소스가 아님), 모든 수준의 classLoaders가 발견되지 않으면 findResource 메소드를 호출하여 이를 찾고, 이 메소드는 구현을 위해 자체 제작한 classLoader에 노출되므로 다음과 같은 기회를 제공합니다. 클래스 경로 외부의 리소스를 로드합니다.

2) 현재 사용자 디렉터리


는 System.getProperty("user.dir" )를 기준으로 반환되는 경로입니다. 일반 프로젝트의 경우 루트 경로입니다. 프로젝트의. JavaEE 서버의 경우 이는 서버에 대한 경로일 수 있습니다. 이에 대한 통일된 표준은 없습니다! 그러나 기본적으로 java.io 패키지의 클래스는 항상 현재 사용자 디렉토리를 기반으로 상대 경로 이름을 분석합니다. 예를 들어 new File("xxx")는 System.getProperty("user.dir")에서 xxx를 찾는 것을 의미합니다. 경로.문서. 따라서 이러한 방식으로 파일을 찾으면 이식 문제가 발생할 수 있습니다.


3) 웹 애플리케이션의 루트 디렉터리


웹 애플리케이션에서는 일반적으로 ServletContext.getRealPath("/ ") 메서드 디렉터리의 절대 경로입니다.

위의 기본 사항을 익힌 후에는 원하는 리소스를 쉽게 찾을 수 있습니다. 그러나 미래 이식의 생사를 떠나 순간적으로만 행복해서는 안 된다는 점을 분명히 이해해야 합니다. . 어떤 환경(j2se나 웹, 윈도우나

Linux)에서도 문제없이 사용이 가능한지 확인해야 합니다.

위 내용은 Java Resource 경로 배치에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.