2016-12-31 56 views
-1

我想编译一些在我的MAC上创建一个TCP套接字的java代码,但是我得到一个错误“找不到符号” - 见下文。我包括脚本来设置Java env(但可能会丢失一些东西)并编译TCPServer.java文件。Mac编译Java源代码找不到JFrame

Webcasts-MBP:~ webcastman$ ./javasetup.sh 
++ cd /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home 
++ export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home 
++ JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home 
++ export JAVA_HOME_BIN=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/bin 
++ JAVA_HOME_BIN=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/bin 
++ export JAVA_HOME_LIB=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/lib 
++ JAVA_HOME_LIB=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/lib 
++ export JAVA_HOME_JRE=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre 
++ JAVA_HOME_JRE=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre 
++ env 
TERM_PROGRAM=Apple_Terminal 
JAVA_HOME_JRE=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre 
TERM=xterm-256color 
SHELL=/bin/bash 
TMPDIR=/var/folders/48/4xh_ymvn7qxgdqqs2mwl1jl80000gn/T/ 
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.aQ1oj20KfU/Render 
TERM_PROGRAM_VERSION=387 
OLDPWD=/Users/webcastman 
TERM_SESSION_ID=163F65D6-FB50-4CBE-BEE6-DB4302EF1BCE 
USER=webcastman 
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.XUxsF2pGmM/Listeners 
__CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0 
JAVA_HOME_BIN=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/bin 
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 
PWD=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home 
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home 
LANG=en_US.UTF-8 
XPC_FLAGS=0x0 
XPC_SERVICE_NAME=0 
HOME=/Users/webcastman 
SHLVL=2 
LOGNAME=webcastman 
JAVA_HOME_LIB=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/lib 
_=/usr/bin/env 
++ env 
++ grep JAVA 
JAVA_HOME_JRE=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre 
JAVA_HOME_BIN=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/bin 
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home 
JAVA_HOME_LIB=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/lib 
++ export CLASSPATH=:.:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/lib/tools.jar:/Users/webcastman/ 
++ CLASSPATH=:.:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/lib/tools.jar:/Users/webcastman/ 
++ javac /Users/webcastman/TCPServer.java 
/Users/webcastman/ServerBoard.java:5: error: cannot find symbol 
public class ServerBoard extends JFrame { 
           ^
    symbol: class JFrame 
/Users/webcastman/ServerBoard.java:6: error: cannot find symbol 
    private JTextArea messagesArea; 
      ^
    symbol: class JTextArea 
    location: class ServerBoard 
/Users/webcastman/ServerBoard.java:7: error: cannot find symbol 
    private JButton sendButton; 
      ^
    symbol: class JButton 
    location: class ServerBoard 
/Users/webcastman/ServerBoard.java:8: error: cannot find symbol 
    private JTextField message; 
      ^
    symbol: class JTextField 
    location: class ServerBoard 
/Users/webcastman/ServerBoard.java:9: error: cannot find symbol 
    private JButton startServer; 
      ^
    symbol: class JButton 
    location: class ServerBoard 
/Users/webcastman/TCPServer.java:19: error: cannot find symbol 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
            ^
    symbol: variable JFrame 
    location: class TCPServer 
/Users/webcastman/TCPServer.java:20: error: cannot find symbol 
     frame.pack(); 
      ^
    symbol: method pack() 
    location: variable frame of type ServerBoard 
/Users/webcastman/TCPServer.java:21: error: cannot find symbol 
     frame.setVisible(true); 
      ^


Can someone tell me what is wrong 
+1

您是否将必要的导入添加到类文件?你也需要向我们展示你的代码(至少它的一个准系统版本,参见[mcve]) – ochi

回答

1

没有看到您的代码,有点难以告诉,但从您的错误,我相信你没有导入必要的库到您的代码。

我会将此行添加到代码的顶部,以便导入所有Swing组件。

import javax.swing.*; 

或者您可以分别导入每个组件。

import javax.swing.JFrame; 
import javax.swing.JTextArea; 
import javax.swing.JButton; 
import javax.swing.JTextField;