对于上下文,有两个java包文件,Poligon.java和PersegiPanjang.java。我试图编译我的第二个包,但它说许可被拒绝。我检查了目录权限,它允许所有权限,但是当我试图编译包时仍然被拒绝。
mylaptop@MacBook-Pro pert 3 % javac org/poligon/Poligon.java
mylaptop@MacBook-Pro pert 3 % javac -cp org/poligon;. org/bangundatar/PersegiPanjang.java
error: no source files
org/bangundatar/PersegiPanjang.java:1: permission denied: /Applications
org/bangundatar/PersegiPanjang.java:2: command not found: 3-inheritance.pdf
org/bangundatar/PersegiPanjang.java:3: command not found: 3-inheritance.pdf
org/bangundatar/PersegiPanjang.java:4: command not found: 3-inheritance.pdf
org/bangundatar/PersegiPanjang.java:5: permission denied: org/
org/bangundatar/PersegiPanjang.java:7: command not found: package
org/bangundatar/PersegiPanjang.java:9: command not found: import
org/bangundatar/PersegiPanjang.java:11: command not found: public
org/bangundatar/PersegiPanjang.java:private:12: not valid in this context: panjang,lebar
double=''
Poligon.java位于"/Users/username/Desktop/Matkul/smt 4/pbo/prak/pert 3/org/poligon"
PersegiPanjang.java位于"/Users/username/Desktop/Matkul/smt 4/pbo/prak/pert 3/org/bangundatar"
Poligon.java:
package org.poligon;
public class Poligon{
protected int jumlahSisi;
public int getJumlahSisi(){
return this.jumlahSisi;
}
}
PersegiPanjang.java:
package org.bangundatar;
import org.poligon.Poligon;
public class PersegiPanjang extends Poligon{
private double panjang,lebar;
public PersegiPanjang(double panjang, double lebar, int jumlahSisi){
this.panjang = panjang;
this.lebar = lebar;
this.jumlahSisi = jumlahSisi;
}
public double hitungLuas(){
return panjang * lebar;
}
public void printInfo(){
System.out.println("Bangun Persegi Panjang bersisi "+this.getJumlahSisi());
}
}
我希望它能成功编译,没有任何拒绝的许可。这是文件权限访问信息
您使用了错误的指南;您正在使用一个用于windows的路径分隔符,这意味着您现在使用了错误的Java路径分隔符,这意味着该命令被不同地解析。
javac -cp org/poligon;. org/bangundatar/PersegiPanjang.java
windows操作系统,:
是驱动器号的分隔符,所以它不能用来分隔路径,所以在windows上,选择;
。但是在中几乎所有的命令行shell(除了windows),;
为命令分隔符。因此,使用:
。当您在终端中输入上述内容时,意味着bash会查看该内容并执行:
对,你想让我先运行:
javac -cp org/poligon
然后你想让我运行:
. org/bangundatar/PersegiPanjang.java
也就是就是输出显示正在发生什么。第一行产生错误'no source files'。
第二行需要更多的解释:几乎所有的shell应用程序(它是您输入这些命令的应用程序,黑色框中有白色文本的那个)都有一个source
命令,它读取您提供的任何文件,并像shell脚本一样执行它:只需运行该文本文件中的每个命令,就像您自己在命令行中输入一样,直接。而且大多数shell都有一个单独的.
作为别名。
因此,. org/bangundatar/PersegiPanjang.java
等同于打开该java文件,选择所有内容,将其复制到剪贴板,进入您的终端,并将其全部粘贴。这将导致大量错误,因为java显然不是命令行语言。
修复吗?只需将;
替换为:
。更一般地说,您应该总是将java路径参数放在单引号中,因为如果您的shell转义或以其他方式处理它,它永远不会做您想要的事情。javac -cp 'org/poligon:.' org/bangundatar/*.java
是您需要输入的命令。