How do I run a Java class in a package?

后端 未结 5 1757
眼角桃花
眼角桃花 2020-11-28 11:37

I have two java classes as follows

App1 without a package:

class App1 {
    public static void main(String[] args) {
        System.out.         


        
相关标签:
5条回答
  • 2020-11-28 11:45

    You have to put -d directory Options..because

    Set the destination directory for class files. If a class is part of a package, javac puts the class file in a subdirectory reflecting the package name, creating directories as needed. For example, if you specify -d c:\myclasses and the class is called com.mypackage.MyClass, then the class file is called c:\myclasses\com\mypackage\MyClass.class.

    0 讨论(0)
  • 2020-11-28 11:53

    If you put the source in an appropriate directory hierarchy matching the package name (D:\javaTest\java\java\package1\App1.java), and compile/run from the root of the hierarchy (D:\javaTest), you wouldn't have this problem:

    D:\javaTest>javac java\java\package1\App1.java
    
    D:\javaTest>java java.java.package1.App1
    App2 hello world...
    

    You can also compile using the -d option so that the classes are moved into such a directory hierarchy:

    javac -d . App2.java
    java java.java.package1.App2
    

    Note you shouldn't use a package name starting with java, and later versions of the JDK will throw a SecurityException. See this question for more information.

    0 讨论(0)
  • 2020-11-28 11:57

    App2 needs to be in the java/java/package1 directory. In java, the package name and the directory for the source code must match. Did you not get a compilation error?

    0 讨论(0)
  • 2020-11-28 12:02

    You create a new directory. This is the directory containing your work, and is not the start of your packages.

    For instance, I create folder /terri to start.

    I then create the folder structure /clarie/andrea under it. My package is going to be called claire.andrea in this example. Normal package names start with com and then a company name or something like that (or java for standard java packages, so don't use that: like java.lang.*).

    In the andrea folder, I create a java file called Saluton.java with the class Saluton (which just print hello). The class name and the filename must match.

    To compile, from the terri/ folder: javac .\claire\andrea\Saluton.java This will create a Saluton.class in the \terri\claire\andrea\Saluton.class

    To run: (again from /terri), I do: java -cp . claire.andrea.Saluton Which says, use class path from my current directory.
    My main program is in the package claire.andrea and the Class name is Saluton.

    Here's the run: \terri java -cp . claire.andrea.Saluton

    "Hello World".

    To sum it up, the package name much match the underlying directory structure. The file (if it references a package) must live inside the directory stucture it is refering. If I compile Saluton.java in /terri with package claire.andrea I have not found a way to run it, it does compile fine.

    Also, the filename for the class must match the public class in that file.

    To run, package.Class. In general, packages are not capitalized and Classes are.

    0 讨论(0)
  • 2020-11-28 12:08

    Check what is your classpath value by below command in command prompt echo %CLASSPATH%

    check where your class is getting created. to compile a java source program you need to check the path you are giving , whether java file is available there or not.

    0 讨论(0)
提交回复
热议问题