Java |自定义创建的包不存在 目的 我希望能够创建一个包并调用它 或者,我想为我的方法创建单独的文件(以避免在一个文件中包含x个类) 安装程序
这是我的LetterGrader.java文件:Java |自定义创建的包不存在 目的 我希望能够创建一个包并调用它 或者,我想为我的方法创建单独的文件(以避免在一个文件中包含x个类) 安装程序,java,package,classpath,method-call,Java,Package,Classpath,Method Call,这是我的LetterGrader.java文件: package grade.util; import java.util.*; import java.io.*; public class LetterGrader { private void readArgs() { System.out.println("Hello, read CLA!"); } } import java.util.*; import java.io.*; public class
package grade.util;
import java.util.*;
import java.io.*;
public class LetterGrader {
private void readArgs() {
System.out.println("Hello, read CLA!");
}
}
import java.util.*;
import java.io.*;
public class TestLetterGrader {
public static void main(String[] args) {
LetterGrader letterGrader = new LetterGrader(); // instantiate
letterGrader.readArgs(); // call method
}
}
这是我的testletegrader.java文件:
package grade.util;
import java.util.*;
import java.io.*;
public class LetterGrader {
private void readArgs() {
System.out.println("Hello, read CLA!");
}
}
import java.util.*;
import java.io.*;
public class TestLetterGrader {
public static void main(String[] args) {
LetterGrader letterGrader = new LetterGrader(); // instantiate
letterGrader.readArgs(); // call method
}
}
采取的步骤
- 这将自动创建bin/grade/util/LetterGrader.class文件 javac-dbin-sourcepath src/grade/util/LetterGrader.java
- 这失败了
src/grade/util/TestLetterGrader.java:6: error: cannot find symbol
LetterGrader letterGrader = new LetterGrader(); // instantiate
^
symbol: class LetterGrader
location: class TestLetterGrader
问题:
- 我相信我误解了如何从不同的文件(在同一位置)调用类。我怎样才能做到这一点李>
package grade.util
,并将其重命名为放置类的包
文件结构:
src
\
\
yourpackage
\
\
LetterGrader.java TestLetterGrader.java
然后删除构建文件夹中的所有内容并编译类。Java会让它变魔术。您确实需要担心bin文件夹,它只用于存储编译后的类
类将如下所示:
//package name that you created
package yourpackage;
public class LetterGrader {
//need to be public when calling from another class
public void readArgs() {
System.out.println("Hello, read CLA!");
}
}
及
你的第二个问题:
您可以使用其他文件夹中的类,但必须导入它们,并且它们必须位于src文件夹下
告诉您在第二个文件夹中有class A.java,在主文件夹中有class B.java。在本例中,您将导入文件夹import Second.A代码>
然后调用类aa=newa()代码>
如果在中有要调用的方法,只需执行以下操作:
a.yourmethod()代码>
您必须将private void…
更改为public void…
,因为您不能在类外调用private
运行编译类时,它们必须位于同一文件夹中。您正在导入bin文件夹中的类。不要那样做,那是行不通的。您不需要任何导入,因为类位于同一位置。将包放在src文件夹下,并将类放在那里。删除package grade.util
,并将其重命名为放置类的包
文件结构:
src
\
\
yourpackage
\
\
LetterGrader.java TestLetterGrader.java
然后删除构建文件夹中的所有内容并编译类。Java会让它变魔术。您确实需要担心bin文件夹,它只用于存储编译后的类
类将如下所示:
//package name that you created
package yourpackage;
public class LetterGrader {
//need to be public when calling from another class
public void readArgs() {
System.out.println("Hello, read CLA!");
}
}
及
你的第二个问题:
您可以使用其他文件夹中的类,但必须导入它们,并且它们必须位于src文件夹下
告诉您在第二个文件夹中有class A.java,在主文件夹中有class B.java。在本例中,您将导入文件夹import Second.A代码>
然后调用类aa=newa()代码>
如果在中有要调用的方法,只需执行以下操作:
a.yourmethod()代码>
您必须将private void…
更改为public void…
,因为您不能在类外调用private
运行编译类时,它们必须位于同一文件夹中。感谢@maratonec的指导
我最初的错误是,当通过终端运行程序时,我误解/错误地分配了classpath赋值变量。下面的故事帮助了我
编译和运行Java程序(在PC上)
•设置工作目录(比如JavaBook)
C:\>cdjavabook
•编译HelloWorld.java
C:\JavaBook>javac-d bin src\HelloWorld.java
•运行程序
C:\JavaBook>java-classpath bin HelloWorld
而且,将所有类文件放在同一位置的方法简化了事情。我不必担心类路径。但并不理想,因为我有很多文件要处理
至于包的创建,在使用java之前,我将更多地使用java。我想我需要巩固我的理解
谢谢你帮助我 感谢@maratonec的指导
我最初的错误是,当通过终端运行程序时,我误解/错误地分配了classpath赋值变量。下面的故事帮助了我
编译和运行Java程序(在PC上)
•设置工作目录(比如JavaBook)
C:\>cdjavabook
•编译HelloWorld.java
C:\JavaBook>javac-d bin src\HelloWorld.java
•运行程序
C:\JavaBook>java-classpath bin HelloWorld
而且,将所有类文件放在同一位置的方法简化了事情。我不必担心类路径。但并不理想,因为我有很多文件要处理
至于包的创建,在使用java之前,我将更多地使用java。我想我需要巩固我的理解
谢谢你帮助我 这对你有帮助吗?Java会让它变得神奇。您确实需要担心bin文件夹,它只用于存储已编译的类。
我对此有点茫然。你能指出那是什么命令吗?我的工作理解如下:1。我必须编译第2类。理想情况下,混合使用.class和.java文件不是一个很好的实践。话虽如此,我还是做了以下几点。1.构建了ranjavac LetterGrader.java
,这样类与.java文件位于同一文件夹中。2.已从testletegrader
中删除导入stmt。仍然有相同的错误,尽管您必须在src下创建文件夹,并将.java文件放在该文件夹中。然后在这两个类中添加包yourfoldername代码>Java变魔术:Java将在编译命令后自动将编译好的类放入bin folderThreak@maratonec。