[java] IntelliJ의 클래스 경로에 속성 파일 추가

Run-> Run 메뉴를 사용하여 IntelliJ IDE에서 간단한 Java 프로그램을 실행하고 있습니다. 잘 작동합니다. 이제 log4j 로깅을 추가하고 싶습니다.

내 프로젝트 루트 아래에 리소스 폴더를 추가했습니다. 해당 폴더에 log4j.properties 파일을 추가했습니다. 뭔가를 기록하도록 코드를 변경했습니다.

IntelliJ에 클래스 경로에 리소스 폴더를 포함하여 속성 파일이 표시되도록하는 올바른 방법은 무엇입니까?

IntelliJ 8을 사용하면 취한 원숭이처럼 추측하여 결국 작동하게 할 수 있습니다. 나는 지금 9 개를 가지고 있고 나는 완전히 실패한다. 한 시간 동안 노력했습니다. 어딘가에 “클래스 경로에 추가”옵션은 어떻습니까? / fume / vent / rant



답변

이 시도:

  • 프로젝트 구조로 이동합니다.
  • 모듈을 선택하십시오.
  • 오른쪽 트리에서 폴더를 찾아 선택합니다.
  • 해당 트리 (파란색 폴더가있는) 위에있는 소스 버튼을 클릭하여 해당 폴더를 소스 폴더로 만듭니다.

답변

사실, 최소한 두 가지 방법이 있습니다. 첫 번째 방법은 ColinD에서 설명합니다. IDEA에서 “resources”폴더를 Sources 폴더로 구성하기 만하면됩니다. 리소스 패턴리소스 의 확장이 포함 된 경우 프로젝트 를 만들 때 출력 디렉터리에 복사 되고 출력 디렉터리는 자동으로 애플리케이션의 클래스 경로가됩니다.

또 다른 일반적인 방법은 “resources”폴더를 클래스 경로에 직접 추가하는 것입니다. 프로젝트 구조로 이동 | 모듈 | 귀하의 모듈 | 종속성 , 추가 , 단일 항목 모듈 라이브러리를 클릭 하고 “resources”폴더의 경로를 지정합니다.

또 다른 해결책은 log4j.properties 파일을 프로젝트의 소스 루트 (기본 패키지 디렉토리) 바로 아래 에 두는 것 입니다. 모듈 경로 설정 에서 다른 소스 루트를 추가 할 필요가 없다는 점을 제외하면 첫 번째 방법과 동일합니다 . 파일은 Make의 출력 디렉토리에 복사됩니다.

서로 다른의 log4j 구성으로 테스트 할 경우는 직접 사용자 정의 구성 파일을 지정하는 것이 더 쉬울 수 있습니다 실행 / 디버그 구성 , VM 매개 변수를 같이 제출 :

-Dlog4j.configuration=file:/c:/log4j.properties.


답변

나는 같은 문제가 있고 그것은 나를 엄청나게 짜증나게한다 !!

나는 항상 대답 2로 할 것이라고 생각했습니다. Intellij 9에서 작동했습니다 (현재 10 사용).

그러나 내 maven pom 파일에 다음 줄을 추가하면 도움이된다는 것을 알았습니다.

<build>
  ...
  <resources>
    <resource>
      <directory>src/main/resources</directory>
    </resource>
  </resources>
  ...
</build>


답변

Intellij 13x에서이 작업을 수행하는 방법을 알아내는 데 많은 시간을 보냈습니다. Intellij에서 별도의 단계 인 속성 파일을 필요한 아티팩트에 추가 한 적이없는 것 같습니다. 아래 설정은 여러 모듈에서 공유하는 속성 파일이있는 경우에도 작동합니다.

  • 프로젝트 설정으로 이동합니다 (CTRL + ALT + SHIFT + S).
  • 목록에서 하나 이상의 특성 파일을 추가 할 모듈을 선택하십시오.
  • 오른쪽에서 종속성 탭을 선택합니다.
  • 녹색 더하기를 클릭하고 “Jars 또는 디렉토리”를 선택합니다.
  • 이제 속성 파일이 포함 된 폴더를 선택합니다. (개인 파일을 포함하지 않았습니다)
  • Intellij는 이제 선택한 파일의 “범주”가 무엇인지 묻습니다. “클래스”를 선택하십시오 (아닌 경우에도).
  • 이제 속성 파일을 아티팩트에 추가해야합니다. Intellij는 아래와 같은 바로 가기를 제공합니다. 하단의 빨간색 부분에 오류가 표시되고 클릭하면 아티팩트에 파일을 추가하는 옵션이 표시되는 ‘빨간색 전구’가 표시됩니다. ‘아티팩트’섹션으로 이동하여 파일을 아티팩트에 수동으로 추가 할 수도 있습니다.

여기에 이미지 설명 입력


답변

.ini 확장자를 가진 파일을 클래스 경로에 추가하는 유사한 문제에 직면했습니다. 이 답변을 찾았습니다.이 답변 은 Preferences-> Compiler-> Resource Patterns-> […]; *. ini에 추가하는 것입니다.


답변

Scala 및 SBT에서 동일한 문제가 발생하는 경우 :

  • 프로젝트 구조로 이동합니다. 단축키는 (CTRL + ALT + SHIFT + S)입니다.

  • 맨 왼쪽 목록에서 프로젝트 설정> 모듈을 선택합니다.

  • 오른쪽의 모듈 목록에서 프로젝트 이름의 모듈 (빌드 제외)을 선택하고 소스 탭을 선택합니다.

  • 중간에 프로젝트의 루트 폴더를 확장합니다. /home/<username>/IdeaProjects/<projectName>

  • 오른쪽의 콘텐츠 루트 섹션을 보면 빨간색 경로는 아직 만들지 않은 디렉터리입니다. Resources 디렉터리에 속성 파일을 넣는 것이 좋습니다. 그래서 src/main/resourceslog4j.properties를 만들고 그 안에 넣었습니다. 콘텐츠 루트를 수정하여 원하는 곳에 둘 수도 있다고 생각합니다 (나는 이것을하지 않았습니다).

  • SBT 구성으로 내 코드를 실행했는데 내 log4j.properties 파일을 찾았습니다.

여기에 이미지 설명 입력


답변

Eclipse에서 IntelliJ 또는 다른 방법으로 마이그레이션하는 사용자에게는 속성 파일 또는 기타 리소스 파일로 작업 할 때 유용한 팁이 있습니다.

그것의 미친 짓 (저의 밤을 알아내는 데 드는 비용)이지만 IDE에서 로컬로 실행하거나 디버깅하는 동안 리소스 / 속성 파일을 찾을 때 IDE의 작업은 상당히 다릅니다. (.jar로 패키징하는 것도 상당히 다르지만 더 잘 문서화되어 있습니다.)

코드에 다음과 같은 상대 경로 참조가 있다고 가정합니다.

new FileInputStream("xxxx.properties");

(JAR와 함께 패키징하고 싶지 않은 env 특정 .properties 파일로 작업하는 경우 편리합니다)

인텔리

(나는 13.1을 사용하지만 더 많은 버전에서 유효 할 수 있습니다)

xxxx.properties 파일은 IntelliJ에서 이와 같이 런타임에 선택되기 위해 프로젝트 ROOT의 PARENT dir에 있어야합니다. (프로젝트 ROOT는 / src 폴더가있는 곳입니다.)

Eclipse는 xxxx.properties 파일이 프로젝트 ROOT 자체에있을 때 행복합니다.

따라서 IntelliJ는 .properties 파일이 이와 같이 참조 될 때 Eclipse보다 1 수준 더 높을 것으로 예상합니다 !!

이는 또한 내 보낸 .jar에 동일한 코드 줄 (new FileInputStream ( “xxxx.properties”);)이있을 때 코드를 실행해야하는 방식에도 영향을줍니다. 민첩하고 .properties 파일을 jar와 함께 패키징하지 않으려면 명령 줄에서 .properties 파일을 올바르게 참조하기 위해 아래와 같이 jar를 실행해야합니다.

INTELLIJ 내보내기 JAR

java -cp "/path/to_properties_file/:/path/to_jar/some.jar" com.bla.blabla.ClassContainingMainMethod

ECLIPSE 내보내기 JAR

java -jar some.jar

Eclipse에서 내 보낸 실행 가능 jar는 참조 된 .properties 파일이 .jar 파일이있는 위치와 동일한 위치에있을 것으로 예상합니다.