警告:我不是 Java 也不是 Eclipse 专家!
我在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
但是当我打开日志文件时,我看到新消息(带有日期/时间戳)仍然采用旧格式。我做错了什么?
如果您需要有关设置的更多详细信息,请告诉我,我会尽力为您提供。我们使用 Eclipse 来管理工作区并使用“智能”,但我们不使用它进行构建。我们非常感谢您提供的任何信息。
最佳答案
可以在类路径上的多个类文件或 jar 文件中定义一个类。发生这种情况时,JVM 会选择使用一个 - 我非常确定它是按照类路径中列出的文件的顺序遇到的第一个文件。
我的猜测是,您遇到了这样的情况,并且您正在替换包含旧类定义的 jar 文件,但 JVM 实际上正在使用类路径上其他文件的定义。从您的评论看来,这或多或少是正确的。
关于java - 构建的java类不代表变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42119219/