编译java程序时出错';找不到符号';

编译java程序时出错';找不到符号';,java,eclipse,macos,compilation,terminal,Java,Eclipse,Macos,Compilation,Terminal,我在终端中尝试使用javac-g命令编译“PongMain.java”时遇到以下错误: 错误: tests-iMac:~ finnfallowfield$ javac -g /Users/finnfallowfield/Desktop/Developer/Java\:Javascript/Game\ Development/Java\ Pong/src/main/pong/PongMain.java /Users/finnfallowfield/Desktop/Developer/Ja

我在终端中尝试使用javac-g命令编译“PongMain.java”时遇到以下错误:

错误:

    tests-iMac:~ finnfallowfield$ javac -g /Users/finnfallowfield/Desktop/Developer/Java\:Javascript/Game\ Development/Java\ Pong/src/main/pong/PongMain.java 
/Users/finnfallowfield/Desktop/Developer/Java:Javascript/Game Development/Java Pong/src/main/pong/PongMain.java:9: error: cannot find symbol
import main.pong.Ball;
                ^
  symbol:   class Ball
  location: package main.pong
/Users/finnfallowfield/Desktop/Developer/Java:Javascript/Game Development/Java Pong/src/main/pong/PongMain.java:10: error: cannot find symbol
import main.pong.PaddleLeft;
                ^
  symbol:   class PaddleLeft
  location: package main.pong
/Users/finnfallowfield/Desktop/Developer/Java:Javascript/Game Development/Java Pong/src/main/pong/PongMain.java:11: error: cannot find symbol
import main.pong.PaddleRight;
                ^
  symbol:   class PaddleRight
  location: package main.pong
/Users/finnfallowfield/Desktop/Developer/Java:Javascript/Game Development/Java Pong/src/main/pong/PongMain.java:15: error: cannot find symbol
    Ball ball;
    ^
  symbol:   class Ball
  location: class PongMain
/Users/finnfallowfield/Desktop/Developer/Java:Javascript/Game Development/Java Pong/src/main/pong/PongMain.java:16: error: cannot find symbol
    PaddleLeft pLeft;
    ^
  symbol:   class PaddleLeft
  location: class PongMain
/Users/finnfallowfield/Desktop/Developer/Java:Javascript/Game Development/Java Pong/src/main/pong/PongMain.java:17: error: cannot find symbol
    PaddleRight pRight;
    ^
  symbol:   class PaddleRight
  location: class PongMain
/Users/finnfallowfield/Desktop/Developer/Java:Javascript/Game Development/Java Pong/src/main/pong/PongMain.java:29: error: cannot find symbol
        ball = new Ball();
                   ^
  symbol:   class Ball
  location: class PongMain
/Users/finnfallowfield/Desktop/Developer/Java:Javascript/Game Development/Java Pong/src/main/pong/PongMain.java:30: error: cannot find symbol
        pLeft = new PaddleLeft();
                    ^
  symbol:   class PaddleLeft
  location: class PongMain
/Users/finnfallowfield/Desktop/Developer/Java:Javascript/Game Development/Java Pong/src/main/pong/PongMain.java:31: error: cannot find symbol
        pRight = new PaddleRight(ball.getY() - 35);
                     ^
  symbol:   class PaddleRight
  location: class PongMain
9 errors
我正在尝试编译一个乒乓球游戏,所有其他java文件都编译得很好,但这一个没有。 以下是我试图编译的文件的代码:

文件源代码:

package main.pong.main;

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

import javax.swing.Timer;

import main.pong.Ball;
import main.pong.PaddleLeft;
import main.pong.PaddleRight;

public class PongMain extends Applet implements MouseMotionListener, ActionListener
{
        Ball ball;
        PaddleLeft pLeft;
        PaddleRight pRight;
        Font newFont = new Font("sansserif", Font.BOLD, 20);
        Graphics bufferGraphics;
        Image offscreen;
        final int WIDTH = 500, HEIGHT = 300;
        long currentTime;

        public void init()
        {
                //Sets the applet to be 500 * 300
                setSize(500, 300);
                //Initiate ball and two paddles
                ball = new Ball();
                pLeft = new PaddleLeft();
                pRight = new PaddleRight(ball.getY() - 35);

                //Add mousMotionListener
                addMouseMotionListener(this);
                setBackground(Color.blue);
                offscreen = createImage(WIDTH, HEIGHT);
                bufferGraphics = offscreen.getGraphics();
        }

        public void start(){
                currentTime = System.currentTimeMillis();
                //Set up frame-rate
                Timer time = new Timer(15, this);
                time.start();
                while(pRight.getScore() < 10){
                }
                time.stop();
                currentTime = System.currentTimeMillis() - currentTime;
                repaint();
        }

        public void stop(){

        }

        public void paint(Graphics g)
        {
                bufferGraphics.clearRect(0,0,WIDTH,HEIGHT);
                bufferGraphics.setColor(Color.green);
                //Left side
                bufferGraphics.fillRect(pLeft.XPOS,pLeft.getPos(),10,70);
                //Right side
                bufferGraphics.fillRect(pRight.XPOS, pRight.getPos(), 10, 70);

                //White lines
                bufferGraphics.setColor(Color.white);
                bufferGraphics.setFont(newFont);
                bufferGraphics.drawString("Futile", 150, 15);
                bufferGraphics.drawString(""+ pRight.getScore(),300,15);
                bufferGraphics.fillRect(240,0,20,300);

                if(pRight.getScore() == 10){
                        //Display for how long game lasted
                        bufferGraphics.drawString("You Lasted: " + (currentTime/ 1000) + "sec.", 40, 150);
                }

                //We draw the ball
                bufferGraphics.setColor(Color.red);
                bufferGraphics.fillRect(ball.getX(), ball.getY(),10, 10);

                g.drawImage(offscreen,0,0,this);
                Toolkit.getDefaultToolkit().sync();
    }


    // STUFF
        public void update(Graphics g)
        {
                paint(g);
        }

        public void mouseMoved(MouseEvent evt)
        {
                pLeft.setPos(evt.getY()- 35);
        }

        public void mouseDragged(MouseEvent evt)
        {
        }

        public void checkCollision(){
                if(ball.getY() == 0 || ball.getY() == 290){
                        ball.dy = (ball.dy * -1);
                }

                if((ball.getX() == 40) && hitPaddle()){
                        ball.dx = (ball.dx * -1);
                }

                if(ball.getX() == 460){
                        ball.dx = (ball.dx * -1);
                }

                if(ball.getX() == 0){
                         pRight.setScore(pRight.getScore() + 1);
                         ball.reset();
                }
        }

        public boolean hitPaddle(){
                boolean didHit = false;

                if((pLeft.getPos() - 10) <= ball.getY() && (pLeft.getPos() + 70) > ball.getY()){
                        didHit = true;
                }
                return didHit;
        }

        @Override
        public void actionPerformed(ActionEvent arg0) {
                ball.move();
                pRight.setPos(ball.getY() - 35);
                checkCollision();
                repaint();
        }
}
package main.pong.main;
导入java.applet.*;
导入java.awt.event.*;
导入java.awt.*;
导入javax.swing.Timer;
导入main.pong.Ball;
导入main.pong.left;
导入main.pong.right;
公共类PongMain扩展小程序实现MouseMotionListener、ActionListener
{
球;
左半边旗;
右前倾;
Font newFont=新字体(“sansserif”,Font.BOLD,20);
图形缓冲图形;
屏幕外图像;
最终整型宽度=500,高度=300;
长时间;
公共void init()
{
//将小程序设置为500*300
设置大小(500300);
//启动球和两个桨
球=新球();
pLeft=新的左拨杆();
pRight=新的右拨杆(ball.getY()-35);
//添加mousMotionListener
addMouseMotionListener(此);
挫折背景(颜色:蓝色);
屏幕外=创建图像(宽度、高度);
bufferGraphics=屏幕外的.getGraphics();
}
公开作废开始(){
currentTime=System.currentTimeMillis();
//设置帧速率
定时器时间=新定时器(15,此);
time.start();
while(pRight.getScore()<10){
}
时间。停止();
currentTime=System.currentTimeMillis()-currentTime;
重新油漆();
}
公共停车场(){
}
公共空间涂料(图g)
{
clearRect(0,0,宽度,高度);
bufferGraphics.setColor(Color.green);
//左侧
fillRect(pLeft.XPOS,pLeft.getPos(),10,70);
//右侧
fillRect(pRight.XPOS,pRight.getPos(),10,70);
//白线
bufferGraphics.setColor(Color.white);
bufferGraphics.setFont(newFont);
1.抽绳(“无用”,150,15);
bufferGraphics.drawString(“+pRight.getScore(),300,15);
bufferGraphics.fillRect(240,0,20300);
if(pRight.getScore()==10){
//显示游戏持续了多长时间
drawString(“你持续了:”+(currentTime/1000)+“秒”,40150);
}
//我们抽签
bufferGraphics.setColor(颜色:红色);
fillRect(ball.getX(),ball.getY(),10,10);
g、 drawImage(屏幕外,0,0,此);
getDefaultToolkit().sync();
}
//东西
公共空间更新(图g)
{
油漆(g);
}
public void mouseMoved(MouseEvent evt)
{
pLeft.setPos(evt.getY()-35);
}
公共无效鼠标标记(鼠标事件evt)
{
}
公共无效检查冲突(){
if(ball.getY()==0 | | ball.getY()==290){
ball.dy=(ball.dy*-1);
}
if((ball.getX()==40)和&hitbiler()){
ball.dx=(ball.dx*-1);
}
if(ball.getX()==460){
ball.dx=(ball.dx*-1);
}
if(ball.getX()==0){
pRight.setScore(pRight.getScore()+1);
ball.reset();
}
}
公共布尔Hitball(){
布尔didHit=false;
如果((pLeft.getPos()-10)ball.getY()){
didHit=true;
}
返回didHit;
}
@凌驾
已执行的公共无效操作(操作事件arg0){
ball.move();
pRight.setPos(ball.getY()-35);
检查碰撞();
重新油漆();
}
}
感谢阅读,请回复并注意我是java和java的完全初学者
堆栈交换,所以我需要很多帮助来修复此问题

要正确编译,需要满足以下几个外部条件:

  • 必须有一个名为
    main.pong.Ball的类
  • 必须提供
    Ball.java
    Ball.class
  • 如果是源文件,则它必须位于编译时类路径上编译器可用的目录
    main/pong
    ,或者必须在
    javac
    命令行中命名
  • 如果是类文件,那么它需要位于编译时类路径上的目录
    main/pong

  • 其中一个条件没有得到满足;遇到所有这些问题,这些问题就会消失(当然,可能会被新的问题所取代)。一般来说,考虑到您的设置,实现这一点的最简单方法是使用“cd”命令切换到目录
    /Users/finnfolowfield/Desktop/Developer/Java:Javascript/Game Development/Java Pong/src/
    ,然后运行
    javac main/pong/PongMain.java

    不要发布pastebin链接,直接发布相关代码和错误。并显示用于编译的确切命令。我认为直接粘贴代码太长了?@SharkyDoesCode:如果当前形式的代码太长,减少它,直到你有一个简短但完整的程序来演示这个问题。这是诊断过程的一部分。@JohnSkeet我改变了pastebin的东西,但错误贯穿了整个过程