Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
?
Solved

Why wont this compile in Visual J++ 1.1 ??

Posted on 1998-05-04
5
Medium Priority
?
309 Views
Last Modified: 2013-11-23
I am trying to compile this program from straight out of a book..
import java.awt.*;
import java.awt.event.*;

public class HelloWindowsApp extends Frame {
 public static void main(String args[]){
  HelloWindowsApp app = new HelloWindowsApp();
 }
 
 public HelloWindowsApp() {
  super("Toby Rules the World!");
  setSize(200,200);
  addWindowListener(new HelloWindowsApp.WindowEventHandler());
  show();
 }
 
 public void paint(Graphics g) {
  g.drawString("Hello Windows!",50,90);
 }
 
 class WindowEventHandler extends WindowAdapter {
  public void windowClosing(WindowEvent e){
   System.exit(0);
  }
 }
}

Very simple nothing to it really but when I try to compile in the trial version of Visuall J++ 1.1 I get the errors:
--------------------Configuration: HelloWindowsApp - Java Virtual Machine Debug--------------------
Compiling...
Microsoft (R) Visual J++ Compiler Version 1.01.7022
Copyright (C) Microsoft Corp 1996. All rights reserved.
D:\My Programs\My Own tests\HelloWindowsApp.java(20,2) : error J0021: Expected type specifier
D:\My Programs\My Own tests\HelloWindowsApp.java(20,2) : error J0019: Expected identifier
D:\My Programs\My Own tests\HelloWindowsApp.java(23,3) : fatal error J0020: Expected 'class' or 'interface'
Error executing jvc.exe.

HelloWindowsApp.class - 3 error(s), 0 warning(s)

the strange thing is this program will compile fine using the dos compiler: javac.
i.e javac HelloWindowsApp.java
no errors, so whats the problem???

0
Comment
Question by:deeznutz
  • 2
  • 2
5 Comments
 
LVL 6

Expert Comment

by:jpk041897
ID: 1220544
Looks like you have misplaced brackets. Try:

import java.awt.*;
import java.awt.event.*;

public class HelloWindowsApp extends Frame {
     public static void main(String args[]){
        HelloWindowsApp app = new HelloWindowsApp();
     }
     
     public HelloWindowsApp() {
        super("Toby Rules the World!");
        setSize(200,200);
        addWindowListener(new HelloWindowsApp.WindowEventHandler());
        show();
      }
     
      public void paint(Graphics g) {
         g.drawString("Hello Windows!",50,90);
      }
 }
class WindowEventHandler extends WindowAdapter {
      public void windowClosing(WindowEvent e){
         System.exit(0);
      }
}

The problem, from looking at the code, is that the missplaced bracket causes the compiler to try to read class WindowEventHandler as a method of HelloWindowsApp instead of as an independent class.

Note that this will compile, but will not run. In order for it to run, you will need to rewrite it as:

import java.awt.*;
    import java.awt.event.*;

    public class HelloWindowsApp extends Frame {
     public static void main(String args[]){
      HelloWindowsApp app = new HelloWindowsApp();
     }
     
     public HelloWindowsApp() {
      super("Toby Rules the World!");
      setSize(200,200);
      addWindowListener(new HelloWindowsApp.WindowEventHandler());
      show();
     }
     
     public void paint(Graphics g) {
      g.drawString("Hello Windows!",50,90);
     }
     
     void WindowEventHandler extends WindowAdapter {
      public void windowClosing(WindowEvent e){
       System.exit(0);
      }
     }
    }

Since event handlers are overriden methods of the object class.
0
 
LVL 1

Author Comment

by:deeznutz
ID: 1220545
Have you tried compiling both your code in Visual J++ 1.1?
I get exactly the saem error, what I cannt understand which you may have missed is that, my first code comiles fine using
the dos command javac HelloWindowsApp.java, but will not compile in J++.

0
 
LVL 5

Expert Comment

by:fontaine
ID: 1220546
As I am not sure, I post as a comment. Tell me if this is an answer. The problem is the inner class. This is pure JDK 1.1 and I think that VJ++ does not support it. Take a look at the doc. about this (I don't have VJ++ by hand). If you put the inner class outside of HelloWindowsApp and turn new HelloWindowsApp.WindowEventHandler() in new WindowEventHandler(), the program should compile without any problem.
0
 
LVL 1

Author Comment

by:deeznutz
ID: 1220547
Thanks, but you have added a comment, and I cannt give you the credit for your answer.  You answer was spot on, so if you want you deserve the points for this question, but I am unable to grade comments. :(
0
 
LVL 5

Accepted Solution

by:
fontaine earned 400 total points
ID: 1220548
Thanks, deeznutz! I repost as an answer then.

The problem is the inner class. This is pure JDK 1.1 and VJ++ does not support it. If you put the inner class outside of HelloWindowsApp and turn new HelloWindowsApp.WindowEventHandler() in new WindowEventHandler(), the program should compile without any problem.
0

Featured Post

Receive 1:1 tech help

Solve your biggest tech problems alongside global tech experts with 1:1 help.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

INTRODUCTION Working with files is a moderately common task in Java.  For most projects hard coding the file names, using parameters in configuration files, or using command-line arguments is sufficient.   However, when your application has vi…
Don’ts and Dos are two important end products of software testing basics that a tester needs to regard. This article attempts to explain the principles of both.
Viewers learn about the scanner class in this video and are introduced to receiving user input for their programs. Additionally, objects, conditional statements, and loops are used to help reinforce the concepts. Introduce Scanner class: Importing…
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
Suggested Courses
Course of the Month11 days, 10 hours left to enroll

564 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question