尝试使用终端中的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();
}
}
感谢您阅读,请回复并注意我是java的完全初学者 堆栈交换所以我需要很多帮助解决这个问题!
答案 0 :(得分:1)
为了正确编译,需要有一些外部条件:
main.pong.Ball
Ball.java
或Ball.class
必须main/pong
中,或者必须在javac
命令行上命名< / LI>
main/pong
目录中。其中一个条件未得到满足;满足他们所有,这些问题应该消失(当然,可能会用新的问题替换掉。)一般来说,根据你似乎有的设置,实现这一目标的最简单方法是使用“cd”命令转换成目录/Users/finnfallowfield/Desktop/Developer/Java:Javascript/Game Development/Java Pong/src/
,然后运行javac main/pong/PongMain.java
。