Hi,
I have executed the sample package program and it executes fine in some conditions.I have a doubt in my program .

My directory structure is:/javaprograms/world/HelloWorld.java
A folder name :world
A java filename:HelloWorld.java

package world;
import java.io.*;
import java.util.*;
public class HelloWorld{
        public static void main(String args[])throws IOException{
        System.out.println("Package Program With Example");
        }
        public static String show(){
                return "Hai how are you";
        }
}

This program is executed fine.

In javaprograms folder
A filenamed :ex_Hello
Importing package world and use in the program .It also executes fine.
Because the world folder is inside the javaprograms folder.

import java.io.*;
import world.*;
class ex_Hello

{
        public static void main(String args[])throws IOException{
        String output;
        System.out.println("Import packages from the source folder world");
        output=HelloWorld.show();
        System.out.println("The output of the program is "+output);
}
}

-------------------------------------------------------------------------------
My doubt is when i keep the program ex_Hello.java outside the javaprogram folder and it doesnot work.Eventhough i hava specified the javaprogram folder in the import.
Forex:

import java.io.*;
import javaprograms.world.*;
class ex_Hello

{
        public static void main(String args[])throws IOException{
        String output;
        System.out.println("Import packages from the source folder world");
        output=HelloWorld.show();
        System.out.println("The output of the program is "+output);
}
}

It displays the error like:
ex_Hello.java:9: cannot access HelloWorld
bad class file: ./HelloWorld.java
file does not contain class HelloWorld
Please remove or make sure it appears in the correct subdirectory of the classpath.
output=HelloWorld.show();

Can anyone say why this error appearing ?

Thank you,

With Regards,
Prem

Edited 6 Years Ago by prem2: n/a

With the first line of your HelloWorld.java file, you have specified the class to be a part of package 'world':-

package world;

That is why the 'world' folder is identified as a valid package, but 'javaprograms' is not.
If you would like it to be recognized as a valid java package, then you would have to declare your HelloWorld class to be a part of package 'javaprograms.world' as below:-

package javaprograms.world;

i.e. 'javaprograms' would be your parent package, and world its sub-package, then your program would run in the final case.

Hi stephen84s,
I have changed the code now

package javaprograms.world;
import java.io.*;
import java.util.*;
public class HelloWorld{
        public static void main(String args[])throws IOException{
        System.out.println("Package Program With Example");
        }
        public static String show(){
                return "Hai how are you";
        } 
}

In import package file named:ex_Hello.java kept outside of the javaprograms folder.Still, i am getting the error.
filename :ex_Hello.java

import java.io.*;
import javaprograms.world.*;
class ex_Hello

{
	public static void main(String args[])throws IOException{
	String output;
	System.out.println("Import packages from the source folder world");
	output=HelloWorld.show();
	System.out.println("The output of the program is "+output);
}
}

Error :

ex_Hello.java:9: cannot access HelloWorld
bad class file: ./HelloWorld.java
file does not contain class HelloWorld
Please remove or make sure it appears in the correct subdirectory of the classpath.
output=HelloWorld.show();
^

Thank you,

With Regards,
Prem

bad class file: ./HelloWorld.java

Why is it refering to a .java source file as being a bad class file?

Is this an IDE configuration problem?

What command do you execute to generate that error message shown in red?

Hi NormR1,
I just execute a normal exeuction step.I do no anything about the IDE.

Thank you,
Prem

I just execute a normal exeuction step

What is a "normal execution step"?

What command do you execute to generate that error message shown in red?
Please show the full contents of the command prompt screen.

hi,
ex_Hello.java is outside the folder javaprograms.

import java.io.*;
import javaprograms.world.*;
class ex_Hello

{
        public static void main(String args[])throws IOException{
        String output;
        System.out.println("Import packages from the source folder world");
        output=HelloWorld.show();
        System.out.println("The output of the program is "+output);
}
}

javac ex_Hello.java
ex_Hello.java:9: cannot access HelloWorld
bad class file: ./HelloWorld.java
file does not contain class HelloWorld
Please remove or make sure it appears in the correct subdirectory of the classpath.
output=HelloWorld.show();
^
1 error


Thank you,

With Regards,
prem

HelloWorld is in a package: package javaprograms.world;
The classpath must point to the folder containing the javaprograms folder for the javac commmand to find the HelloWord.class file.

Your javac command doesn't appear to have a classpath option.
Is javaprograms a folder in the folder containing ex_Hello.java

Hi,
pg:
HelloWorld.java
path:prem/javaprograms/world/HelloWorld.java
and the class file HelloWorld.class is also in same path.

package javaprograms.world;
import java.io.*;
import java.util.*;
public class HelloWorld{
        public static void main(String args[])throws IOException{
        System.out.println("Package Program With Example");
        }
        public static String show(){
                return "Hai how are you";
        } 
}

The another program which import package is kept in the path
outside of the javaprograms folder:
/prem/ex_Hello.java


javac ex_Hello.java
ex_Hello.java:9: cannot access HelloWorld
bad class file: ./HelloWorld.java
file does not contain class HelloWorld
Please remove or make sure it appears in the correct subdirectory of the classpath.
output=HelloWorld.show();
^
1 error

Thank you,

With Regards,
prem

ex_Hello is not in the same package as HelloWorld.
Where is the source file: ex_Hello.java?

The javac program requires that the folder containing the folder javaprograms be on the classpath. Is it?

May I ask a question? Probably it is stupid but just in case to make sure.

Have you compiled the HelloWorld.java file and where the HelloWorld.class file is?

Hi,
I explained the directory structure clearly,
The folder
prem-> javaprograms->world->HelloWorld.java and HelloWorld.class
Ist Part:
Executing the HelloWorld.java file in the folder prem:
java javaprograms.world.HelloWorld
The result is,
Package Program With Example

The file
ex_Hello.java kept in
prem->ex_Hello.java

The command typed inside the prem folder:
javac ex_Hello.java
It displays the error.


Thank you,

With Regards,
Prem

bad class file: ./HelloWorld.java

I still do not understand why the error message refers to a source file???

I just copied the files to the folders as you describe them and had no problems compiling and executing ex_Hello. Its output:

Import packages from the source folder world
The output of the program is Hai how are you

pls Send the output and execution steps for executing the ex_Hello.java

Thank you,

With Regards,
prem

I copied your HelloWorld.java file to the world folder (in the javaprograms folder) and compiled it.
I copied the ex_Hellow.java file to the folder where the javaprograms folder was.
I javac ex_Hellow.java end then executed it:


D:\JavaDevelopment\Testing\ForumQuestions3>java ex_Hello
Import packages from the source folder world
The output of the program is Hai how are you

D:\JavaDevelopment\Testing\ForumQuestions3>dir javaprograms
Volume in drive D is Work
Volume Serial Number is 1463-F5AE

Directory of D:\JavaDevelopment\Testing\ForumQuestions3\javaprograms

08/17/2010 08:30 AM <DIR> .
08/17/2010 08:30 AM <DIR> ..
08/17/2010 08:36 AM <DIR> world
0 File(s) 0 bytes
3 Dir(s) 8,767,406,080 bytes free

D:\JavaDevelopment\Testing\ForumQuestions3>dir javaprograms\world
Volume in drive D is Work
Volume Serial Number is 1463-F5AE

Directory of D:\JavaDevelopment\Testing\ForumQuestions3\javaprograms\world

08/17/2010 08:36 AM <DIR> .
08/17/2010 08:36 AM <DIR> ..
08/17/2010 08:32 AM 817 HelloWorld.class
08/17/2010 08:32 AM 330 HelloWorld.java
2 File(s) 1,147 bytes
2 Dir(s) 8,767,406,080 bytes free

D:\JavaDevelopment\Testing\ForumQuestions3>

Hi,
Is there any permission issue for the folders and files?I have runned my program as a root user.

Thank you,

With Regards,
Prem

Hi NormR1,
I have executed the program successfully With some changes.But it does not satisfy my requirment.


I have put the ex_Hello.java file in the same directory world.

The world directory contains the,
HelloWorld.java

So , both the ex_Hello.java file and world folder are in the same folder.
javaprograms dir.

changes:
In ex_Hello.java

import java.io.*;
import world.*;
class ex_Hello

{
	public static void main(String args[])throws IOException{
	String output;
	System.out.println("Import packages from the source folder world");
	output=HelloWorld.show();
	System.out.println("The output of the program is "+output);
}
}

program: HelloWorld

package world;
import java.io.*;
import java.util.*;
public class HelloWorld{
	public static void main(String args[])throws IOException{
	System.out.println("Package Program With Example");
	}
	public static String show(){
		return "Hai how are you";
	} 
}

1.Is this compulsory to keep the package folder and importing package file in the same directory?
2.If you have any suggestion please specify it?

Thank you,

With Regards,
Prem

Is the classpath set on your PC? Are you using an IDE that sets the classpath?

I built the folder structure you showed, used your sources with the package statements and was able to compile and execute as I posted.

You show two different package statements:
package javaprograms.world;
and
package world;

If you change that, then my tests will not work. I used the first one.

Edited 6 Years Ago by NormR1: n/a

But, when i use the first one i did not get the result.so only i tried the second step.I dont know about the IDE .I am using the fedora redhat.So did not set the classpath .

JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/


Thank you,


With Regards,
Prem

This article has been dead for over six months. Start a new discussion instead.