Could you post your Diagnostic.java code?

I think your best bet to solving the <classcontants> issue is to dig under the hood of its code and see what makes it tick and experiment. Or, certainly simpler, write a custom Ant task that gets the information from Diagnostic and sets and Ant property. It'd only be a few lines of code to do this - extend from Task, implement a public void execute() method, get the value you want, and call project.setNewProperty(...).

        Erik

On Jan 24, 2005, at 9:09 PM, michael sorens wrote:

Yes, my constants are "public static final". The problem, I found, is that the definition of VERSION is a method evaluation, not a compile-time constant, as you had tried. So that answers that question.

The remaining issue is back on the file that I really want to use, Diagnostic.class. Changing nothing except the class name & path to point to this file causes an IOException, so it looks like a bug to me. Who does one inform of such things?

BTW, Erik thanks for your <prefixlines> tip regarding constants!


On Mon, 24 Jan 2005 12:14:56 -0500, Erik Hatcher <[EMAIL PROTECTED]> wrote:


On Jan 24, 2005, at 11:05 AM, michael sorens wrote:
(1) Well I tried adding bcel.jar to my ant/lib directory but it made
no difference.
What did make a difference was my choice of .class file to load.
Instead of my Diagnostic.class
I tried a simpler Version.class and then I received no error, even
*without* bcel.jar. So this seems like a data-dependent bug...

Did you make your VERSION be "public static final"? I just tried it (had to download and install BCEL into ANT_HOME/lib myself) with this class:

public class Test {
   public static final String VERSION = "version";
}

I also tried it with an int:

   public static final int VERSION = 123;

with this build file snippet:

    <loadproperties srcfile="build/Test.class">
        <filterchain>
          <classconstants/>
        </filterchain>
     </loadproperties>
     <echo>${VERSION}</echo>

(2) As I could successfully execute with my Version.class, how do I
then *access* the properties?
I have a constant named VERSION. I tried <echo> with "${VERSION}" and
with "${com.cleancode.data.Version.VERSION}" but neither had a value.
What are the rules for the name of a property from a class file?

the property name is the constant name, no package prefix is added. Though a slick trick is to use a <prefixlines prefix="constants."/> after <classconstants>.

My guess is your property is not public static final.

        Erik


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]






--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to