2017-02-08 6 views
1

경고 : Java 나 Eclipse 전문가가 아닙니다!빌드 된 Java 클래스가 변경 사항을 나타내지 않음

Eclipse에서 Java 프로젝트를 상속 받았습니다. 여러 Java 파일을 변경했습니다. 이렇게하고 파일을 저장 한 후에 set_javac.bat라는 파일을 실행했습니다 (상 속됨).

set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_85 

rem set JAR_HOME="D:\Cognos\cognos_version\sdk\java\lib" 
set JAR_HOME="D:\code\lib" 

set JAVAC=%JAVA_HOME%/bin/javac 

set PATH=%JAVA_HOME%/bin 
rem Create the Classpath 

set CLASSPATH= 
set CLASSPATH=%CLASSPATH%;%JAVA_HOME%/lib/tools.jar 

rem Compile Java files 

이 파일을 실행 한 후, 나는 경우 build.bat를 실행 한 후 오전 (또한 상속 - 편집 됨) : 여기에 해당 파일의 편집 됨 버전입니다

@echo off 

rem Licensed Materials - Property of IBM 
rem 
rem IBM Cognos Products: CAMAAA 
rem 
rem (C) Copyright IBM Corp. 2005, 2012 
rem 

rem Copyright © 2008 Cognos ULC, an IBM Company. All Rights Reserved. 
rem Cognos and the Cognos logo are trademarks of Cognos ULC (formerly Cognos Incorporated). 

rem Build Java files in directory TestSample 

echo Building TestSample 

rem Build the CLASSPATH required to build Java files in the directory TestSample 

set _CLASSPATH=D:\code\lib\CAM_AAA_CustomIF.jar;D:\code\adapters;D:\Cognos\cognos_version\webapps\p2pd\WEB-INF\lib\ojdbc6.jar;D:\code\lib\axis.jar;D:\code\lib\jaxrpc.jar 

rem Compile Java files 
javac -Xlint:unchecked -classpath %_CLASSPATH% -d . *.java 

rem Create jar file 
jar cfm0 CAM_AAA_TestSample.jar MANIFEST *.class 

echo done 

파일이없이 실행 .BAT이 두 가지 모두를 오류. 새 .class 파일은 .java 파일과 동일한 디렉토리에 작성됩니다. 새 CAM_AAA_TestSample.jar 파일도 작성됩니다. 그러나 .jar 파일을 올바른 위치에두고 Cognos 서비스를 다시 시작하고 로그 파일을 확인하면 변경 한 내용이 표시되지 않습니다. 특히, 내가 (예를 들어)에서 로그 메시지를 변경 :

thisfile: init 

에 ...

thisfile.java -> init: Entered function 

을하지만 로그 파일을 열 때, 나는 새로운 메시지를 참조 (날짜/시간 스탬프) 여전히 이전 형식으로. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

설정에 대한 자세한 내용이 필요하면 알려 주시면 최대한 도와 드리겠습니다. 우리는 이클립스를 사용하여 작업 공간을 관리하고 "인텔리전스"를 사용하지만, 우리는 그것을 사용하지 않습니다. 제공 할 수있는 모든 정보는 진심으로 감사드립니다.

+0

이 jar 파일은 클래스 경로의 여러 위치에 있습니까? 아마 실제로 사용되는 것을 교체하지 않을 것입니까? – Brick

+0

현재로서는 솔직히 모르겠지만 그렇게 믿지는 않습니다. Sys Admins가 "작업중인"파일을 내가 작성한 새 파일로 바꿀 때 내장 된 디렉토리의 타임 스탬프와 동일한 타임 스탬프를 가지고 있는지 확인합니다.하지만 둘러 보겠습니다. – XstreamINsanity

+0

나는 어떤 클래스 정의가 두 곳에서 나타나는 것을 보았다. 그런 다음 JVM이 처음 발견합니다. "근무중인"파일이 당신이 생각하는 파일이 아닐 수도 있습니다. 여기에서 말하는 것이 어렵다. 그냥 생각. – Brick

답변

0

클래스 경로에 둘 이상의 클래스 파일 또는 jar 파일로 클래스를 정의 할 수 있습니다. 이런 일이 생기면 JVM이 사용할 파일을 선택합니다. 클래스 경로에 나열된 파일을 순서대로 만나는 것은 처음입니다.

내 생각 엔 이런 경우가있어서 대체하고있는 것 같습니다. 이전 클래스 정의가 들어있는 jar 파일이지만 JVM이 클래스 경로의 다른 파일의 정의를 실제로 사용하고있었습니다. 귀하의 의견에서 이것은 다소 정확하다는 것 같습니다.