Home » Language IDEs » Java Development Tools (JDT) » frustrating eclipse2.1.1 javac error message
frustrating eclipse2.1.1 javac error message [message #116676] |
Thu, 13 November 2003 19:43 |
Eclipse User |
|
|
|
Originally posted by: ben.d.cotton.jpmorgan.com
Hi,
Is there a way to establish an eclipse2.1.1 workspace/project
configuration so that the java 1.3 compiler will *not* complain about an
inner-class reference statement (which is being mistaken for an undefined
class field reference)?
In other words, the attached program compiles fine with Sun's Java 2 SDK
1.3 "javac -d . InnerTest.java" from a command line shell, but fails with
a
"t.TheInnerClass cannot be resolved or is not a field" line 11
compiler message when run in my eclipse2.1.1 configuration.
Thanks for any help,
Ben
---------------
package com.jpmorgan.spartak.client;
public class InnerTest {
public class TheInnerClass {
public static final String f1 = "f1-value";
}
public static void main(String[] args) {
InnerTest t = new InnerTest();
System.out.println(t.TheInnerClass.f1); //can't compile in eclipse2.1.1
}
}
|
|
|
Re: frustrating eclipse2.1.1 javac error message [message #116684 is a reply to message #116676] |
Thu, 13 November 2003 21:19 |
Eclipse User |
|
|
|
Originally posted by: olivier_thomann.ca.ibm.comNOSPAM
Le Thu, 13 Nov 2003 19:43:32 +0000 (UTC), ben.d.cotton@jpmorgan.com
(Ben Cotton) a écrit :
>Is there a way to establish an eclipse2.1.1 workspace/project
>configuration so that the java 1.3 compiler will *not* complain about an
>inner-class reference statement (which is being mistaken for an undefined
>class field reference)?
>In other words, the attached program compiles fine with Sun's Java 2 SDK
>1.3 "javac -d . InnerTest.java" from a command line shell, but fails with
>a
>
> "t.TheInnerClass cannot be resolved or is not a field" line 11
>
>compiler message when run in my eclipse2.1.1 configuration.
What did you try to do?
Neither javac 1.4.1 or 1.4.2 or jikes 1.18 compile your code.
javac 1.4.2:
C:\>jdk142
D:\temp>javac InnerTest.java
InnerTest.java:8: unexpected type
required: class, package
found : variable
System.out.println(t.TheInnerClass.f1); //can't compile in
eclipse2.1.1
^
1 error
javac 1.4.1:
C:\>jdk141
D:\temp>javac InnerTest.java
InnerTest.java:8: unexpected type
required: class, package
found : variable
System.out.println(t.TheInnerClass.f1); //can't compile in
eclipse2.1.1
^
1 error
Jikes 1.18:
D:\temp>jikes -classpath d:/jars/rt.jar;.;d:/temp/junit.jar
InnerTest.java
Found 1 semantic error compiling "D:/temp/InnerTest.java":
8. System.out.println(t.TheInnerClass.f1); //can't compile in
eclipse2.1.1
^-----------^
*** Semantic Error: A type "TheInnerClass" was found where a field
name or method call was expected. Did you mean to write
"TheInnerClass.xxx", or "new TheInnerClass()", or ... ?
Javac 1.3.1 compiles it, but I believe this was a bug that has been
fixed since.
So fix your code and it will compile with Eclipse compiler and javac
1.4.1 and javac 1.4.2 and jikes 1.18. I believe you simply need to
remove the 't.' in front of the TheInnerClass.f1.
--
Olivier
|
|
| |
Re: frustrating eclipse2.1.1 javac error message [message #116723 is a reply to message #116684] |
Thu, 13 November 2003 22:29 |
Eclipse User |
|
|
|
Originally posted by: ben.d.cotton.jpmorgan.com
Oliver,
Thanks for your very fast reply. Just now I tried the test for 1.4 and,
for me, the InnerTest.java code compiles/executes without errors nor
warnings using Sun's Java 2 SDK 1.41_03. I will try it later using Sun's
Java 2 SDK 1.42_02. It also compiles in JBuilder9, without errors nor
warnings, for both 1.3 and 1.4 compiler configurations.
Besides what I'm seeing in 1.4, however, what process is Eclipse 2.1.1
engaging in that causes the
"t.TheInnerClass cannot be resolved or is not a field" line 11
message to be generated, even when I have everything configured in
(Window->Preferences->Java->ClasspathVariables->JRE_LIB) and
(Window->Preferences->Java->InstalledJREs) to refer to my local install of
Sun's Java SDK 1.31?
You acknowledge that InnerTest.java works for your local SDK 1.3 command
line compile/execute. Even in conceding that SDK 1.3 may have a bug that
allows it to compile InnerTest.java in defiance of the language
specification, shouldn't Eclipse 2.1.1 defer to my "InstalledJRE"
configuration indication? And, thus, not produce an error message that
SDK 1.3 wouldn't produce?
Thanks, Ben
Olivier Thomann wrote:
> Le Thu, 13 Nov 2003 19:43:32 +0000 (UTC), ben.d.cotton@jpmorgan.com
> (Ben Cotton) a écrit :
> >Is there a way to establish an eclipse2.1.1 workspace/project
> >configuration so that the java 1.3 compiler will *not* complain about an
> >inner-class reference statement (which is being mistaken for an undefined
> >class field reference)?
> >In other words, the attached program compiles fine with Sun's Java 2 SDK
> >1.3 "javac -d . InnerTest.java" from a command line shell, but fails with
> >a
> >
> > "t.TheInnerClass cannot be resolved or is not a field" line 11
> >
> >compiler message when run in my eclipse2.1.1 configuration.
> What did you try to do?
> Neither javac 1.4.1 or 1.4.2 or jikes 1.18 compile your code.
> javac 1.4.2:
> C:>jdk142
> D:temp>javac InnerTest.java
> InnerTest.java:8: unexpected type
> required: class, package
> found : variable
> System.out.println(t.TheInnerClass.f1); //can't compile in
> eclipse2.1.1
> ^
> 1 error
> javac 1.4.1:
> C:>jdk141
> D:temp>javac InnerTest.java
> InnerTest.java:8: unexpected type
> required: class, package
> found : variable
> System.out.println(t.TheInnerClass.f1); //can't compile in
> eclipse2.1.1
> ^
> 1 error
> Jikes 1.18:
> D:temp>jikes -classpath d:/jars/rt.jar;.;d:/temp/junit.jar
> InnerTest.java
> Found 1 semantic error compiling "D:/temp/InnerTest.java":
> 8. System.out.println(t.TheInnerClass.f1); //can't compile in
> eclipse2.1.1
> ^-----------^
> *** Semantic Error: A type "TheInnerClass" was found where a field
> name or method call was expected. Did you mean to write
> "TheInnerClass.xxx", or "new TheInnerClass()", or ... ?
> Javac 1.3.1 compiles it, but I believe this was a bug that has been
> fixed since.
> So fix your code and it will compile with Eclipse compiler and javac
> 1.4.1 and javac 1.4.2 and jikes 1.18. I believe you simply need to
> remove the 't.' in front of the TheInnerClass.f1.
> --
> Olivier
|
|
|
Re: frustrating eclipse2.1.1 javac error message [message #116789 is a reply to message #116692] |
Thu, 13 November 2003 22:48 |
Eclipse User |
|
|
|
Originally posted by: ben.d.cotton.jpmorgan.com
Alvin,
Thanks, yes, that is helpful. I agree that the non-static use of the
't.TheInnerClass.f1' reference is awkward, confusing ... and extremely
uncommon (by specification, static members of inner classes can only be
constants). Nevertheless, Eclipse 2.1.1 (configured explicitly for JDK
1.3) reports this as an error when JDK 1.3 from the command-line does not.
I'm hoping to understand why Eclipse 2.1.1 behaves this way.
Tongue-in-cheek, I feel sort of a mini "Eclipse defiance" of my
Installed/Configured JRE indication. :-)
Ben
Alvin Thompson wrote:
> i would bet that the situation where you're accessing a static member of
> an inner class through both static and non-static means in the same
> expression is not well-defined. anyway, is IMHO that form is *very*
> ugly/improper/confusing. static members are all treated the same, no
> matter where they're created, and it's always best to access static
> members statically. do this instead:
> System.out.println(InnerTest.TheInnerClass.f1);
> this compiles fine.
> hth,
> alvin
|
|
|
Re: frustrating eclipse2.1.1 javac error message [message #116823 is a reply to message #116723] |
Fri, 14 November 2003 01:28 |
Eclipse User |
|
|
|
Originally posted by: manahan.NOSPAM.ca.ibm.com
Eclipse has its own compiler and doesn't use javac. So it is defering to
your InstalledJRE setting, as those are the libs it is compiling against
and against the 1.3 language spec. It just doesn't have the same bugs as
javac for 1.3 does in that space.
Peter
Ben Cotton wrote:
> Oliver,
>
> Thanks for your very fast reply. Just now I tried the test for 1.4 and,
> for me, the InnerTest.java code compiles/executes without errors nor
> warnings using Sun's Java 2 SDK 1.41_03. I will try it later using Sun's
> Java 2 SDK 1.42_02. It also compiles in JBuilder9, without errors nor
> warnings, for both 1.3 and 1.4 compiler configurations.
>
> Besides what I'm seeing in 1.4, however, what process is Eclipse 2.1.1
> engaging in that causes the
>
> "t.TheInnerClass cannot be resolved or is not a field" line 11
>
> message to be generated, even when I have everything configured in
>
> (Window->Preferences->Java->ClasspathVariables->JRE_LIB) and
> (Window->Preferences->Java->InstalledJREs) to refer to my local install of
> Sun's Java SDK 1.31?
>
> You acknowledge that InnerTest.java works for your local SDK 1.3 command
> line compile/execute. Even in conceding that SDK 1.3 may have a bug that
> allows it to compile InnerTest.java in defiance of the language
> specification, shouldn't Eclipse 2.1.1 defer to my "InstalledJRE"
> configuration indication? And, thus, not produce an error message that
> SDK 1.3 wouldn't produce?
>
> Thanks, Ben
>
>
>
>
> Olivier Thomann wrote:
>
>
>>Le Thu, 13 Nov 2003 19:43:32 +0000 (UTC), ben.d.cotton@jpmorgan.com
>>(Ben Cotton) a écrit :
>>
>>>Is there a way to establish an eclipse2.1.1 workspace/project
>>>configuration so that the java 1.3 compiler will *not* complain about an
>>>inner-class reference statement (which is being mistaken for an undefined
>>>class field reference)?
>>>In other words, the attached program compiles fine with Sun's Java 2 SDK
>>>1.3 "javac -d . InnerTest.java" from a command line shell, but fails with
>>>a
>>>
>>> "t.TheInnerClass cannot be resolved or is not a field" line 11
>>>
>>>compiler message when run in my eclipse2.1.1 configuration.
>>
>>What did you try to do?
>
>
>>Neither javac 1.4.1 or 1.4.2 or jikes 1.18 compile your code.
>
>
>>javac 1.4.2:
>
>
>>C:>jdk142
>
>
>>D:temp>javac InnerTest.java
>>InnerTest.java:8: unexpected type
>>required: class, package
>>found : variable
>> System.out.println(t.TheInnerClass.f1); //can't compile in
>>eclipse2.1.1
>> ^
>>1 error
>
>
>>javac 1.4.1:
>
>
>>C:>jdk141
>
>
>>D:temp>javac InnerTest.java
>>InnerTest.java:8: unexpected type
>>required: class, package
>>found : variable
>> System.out.println(t.TheInnerClass.f1); //can't compile in
>>eclipse2.1.1
>> ^
>>1 error
>
>
>>Jikes 1.18:
>
>
>>D:temp>jikes -classpath d:/jars/rt.jar;.;d:/temp/junit.jar
>>InnerTest.java
>
>
>>Found 1 semantic error compiling "D:/temp/InnerTest.java":
>
>
>> 8. System.out.println(t.TheInnerClass.f1); //can't compile in
>>eclipse2.1.1
>> ^-----------^
>>*** Semantic Error: A type "TheInnerClass" was found where a field
>>name or method call was expected. Did you mean to write
>>"TheInnerClass.xxx", or "new TheInnerClass()", or ... ?
>
>
>>Javac 1.3.1 compiles it, but I believe this was a bug that has been
>>fixed since.
>
>
>>So fix your code and it will compile with Eclipse compiler and javac
>>1.4.1 and javac 1.4.2 and jikes 1.18. I believe you simply need to
>>remove the 't.' in front of the TheInnerClass.f1.
>>--
>>Olivier
>
>
>
|
|
|
Re: frustrating eclipse2.1.1 javac error message [message #116926 is a reply to message #116823] |
Fri, 14 November 2003 14:34 |
Eclipse User |
|
|
|
Originally posted by: ben.d.cotton.jpmorgan.com
Thanks Peter (and everyone else). I downloaded Sun's Java 2 SDK 1.42_02
and, indeed, InnerTest.java failed to compile. Pre-1.42 JDKs from Sun
definitely had a bug, evidenced by their successfully compiling the
incorrect InnerTest.java. Thanks again.
Peter Manahan wrote:
> Eclipse has its own compiler and doesn't use javac. So it is defering to
> your InstalledJRE setting, as those are the libs it is compiling against
> and against the 1.3 language spec. It just doesn't have the same bugs as
> javac for 1.3 does in that space.
> Peter
> Ben Cotton wrote:
> > Oliver,
> >
> > Thanks for your very fast reply. Just now I tried the test for 1.4 and,
> > for me, the InnerTest.java code compiles/executes without errors nor
> > warnings using Sun's Java 2 SDK 1.41_03. I will try it later using Sun's
> > Java 2 SDK 1.42_02. It also compiles in JBuilder9, without errors nor
> > warnings, for both 1.3 and 1.4 compiler configurations.
> >
> > Besides what I'm seeing in 1.4, however, what process is Eclipse 2.1.1
> > engaging in that causes the
> >
> > "t.TheInnerClass cannot be resolved or is not a field" line 11
> >
> > message to be generated, even when I have everything configured in
> >
> > (Window->Preferences->Java->ClasspathVariables->JRE_LIB) and
> > (Window->Preferences->Java->InstalledJREs) to refer to my local install of
> > Sun's Java SDK 1.31?
> >
> > You acknowledge that InnerTest.java works for your local SDK 1.3 command
> > line compile/execute. Even in conceding that SDK 1.3 may have a bug that
> > allows it to compile InnerTest.java in defiance of the language
> > specification, shouldn't Eclipse 2.1.1 defer to my "InstalledJRE"
> > configuration indication? And, thus, not produce an error message that
> > SDK 1.3 wouldn't produce?
> >
> > Thanks, Ben
> >
> >
> >
> >
> > Olivier Thomann wrote:
> >
> >
> >>Le Thu, 13 Nov 2003 19:43:32 +0000 (UTC), ben.d.cotton@jpmorgan.com
> >>(Ben Cotton) a écrit :
> >>
> >>>Is there a way to establish an eclipse2.1.1 workspace/project
> >>>configuration so that the java 1.3 compiler will *not* complain about an
> >>>inner-class reference statement (which is being mistaken for an undefined
> >>>class field reference)?
> >>>In other words, the attached program compiles fine with Sun's Java 2 SDK
> >>>1.3 "javac -d . InnerTest.java" from a command line shell, but fails with
> >>>a
> >>>
> >>> "t.TheInnerClass cannot be resolved or is not a field" line 11
> >>>
> >>>compiler message when run in my eclipse2.1.1 configuration.
> >>
> >>What did you try to do?
> >
> >
> >>Neither javac 1.4.1 or 1.4.2 or jikes 1.18 compile your code.
> >
> >
> >>javac 1.4.2:
> >
> >
> >>C:>jdk142
> >
> >
> >>D:temp>javac InnerTest.java
> >>InnerTest.java:8: unexpected type
> >>required: class, package
> >>found : variable
> >> System.out.println(t.TheInnerClass.f1); //can't compile in
> >>eclipse2.1.1
> >> ^
> >>1 error
> >
> >
> >>javac 1.4.1:
> >
> >
> >>C:>jdk141
> >
> >
> >>D:temp>javac InnerTest.java
> >>InnerTest.java:8: unexpected type
> >>required: class, package
> >>found : variable
> >> System.out.println(t.TheInnerClass.f1); //can't compile in
> >>eclipse2.1.1
> >> ^
> >>1 error
> >
> >
> >>Jikes 1.18:
> >
> >
> >>D:temp>jikes -classpath d:/jars/rt.jar;.;d:/temp/junit.jar
> >>InnerTest.java
> >
> >
> >>Found 1 semantic error compiling "D:/temp/InnerTest.java":
> >
> >
> >> 8. System.out.println(t.TheInnerClass.f1); //can't compile in
> >>eclipse2.1.1
> >> ^-----------^
> >>*** Semantic Error: A type "TheInnerClass" was found where a field
> >>name or method call was expected. Did you mean to write
> >>"TheInnerClass.xxx", or "new TheInnerClass()", or ... ?
> >
> >
> >>Javac 1.3.1 compiles it, but I believe this was a bug that has been
> >>fixed since.
> >
> >
> >>So fix your code and it will compile with Eclipse compiler and javac
> >>1.4.1 and javac 1.4.2 and jikes 1.18. I believe you simply need to
> >>remove the 't.' in front of the TheInnerClass.f1.
> >>--
> >>Olivier
> >
> >
> >
|
|
|
Goto Forum:
Current Time: Sat Nov 09 01:12:37 GMT 2024
Powered by FUDForum. Page generated in 0.03927 seconds
|