Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Unix上执行时,如何修复类路径/环境问题和方法错误?_Java_Bash_Unix_Classpath - Fatal编程技术网

Java 在Unix上执行时,如何修复类路径/环境问题和方法错误?

Java 在Unix上执行时,如何修复类路径/环境问题和方法错误?,java,bash,unix,classpath,Java,Bash,Unix,Classpath,我的Linux/Unix版本: Linux localhost.localdomain 2.6.32-358.18.1.e16.i686#1 SMP周三8月28日14:27:42 UTC 2013 i686 i686 i386 GNU/Linux 2.6.32-358.18.1.e16.i686 我尝试在Unix上运行终端,使用javac TouchyWindow.java,然后使用java TouchyWindow。关于这个项目,我有两个问题 问题#1:当我编译它时,每次试图运行它时,我都需要

我的Linux/Unix版本: Linux localhost.localdomain 2.6.32-358.18.1.e16.i686#1 SMP周三8月28日14:27:42 UTC 2013 i686 i686 i386 GNU/Linux

2.6.32-358.18.1.e16.i686

我尝试在Unix上运行终端,使用javac TouchyWindow.java,然后使用java TouchyWindow。关于这个项目,我有两个问题

问题#1:当我编译它时,每次试图运行它时,我都需要为这个程序导出“export CLASSPATH=.:$HOME/objectdraw.jar”

当我试图编译javac TouchyWindow.java时,我希望unix自动运行objectdraw。老师说这是可能的,他给了我一个提示:

(旁白:Unix/Linux允许您定义用于配置的环境变量 CLASSPATH变量是一个有用的变量
定义导出类路径=。:$HOME/objectdraw.jar则在运行java或javac时,您编译/运行的任何使用objectdraw库的java程序都不需要明确的类路径定义,您可以在~cs11xyz/.bashrc文件中看到这方面的示例。该定义仅在您登录或创建新终端时才会激活。)

问题#2:如果我在编译TouchyWindow.java时执行“export CLASSPATH=.:$HOME/objectdraw.jar”,它确实成功编译了,但是,当我命令java TouchyWindow查看reult时,它不起作用,错误是:“错误:在TouchyWindow类中找不到Main方法,请将Main方法定义为:public static void Main(String[]args)”

有人告诉我只需将方法更改为publicstaticvoidmain(String[]args)。它可以工作。但是,我的老师的网站有相同的程序示例,就像我在下面展示的代码一样,没有使用方法“publicstaticvoidmain(String[]args)”,仍然可以很好地工作。如果您想查看示例,以下是链接: 如果单击源代码,可以看到程序没有使用publicstaticvoidmain(String[]args)

请帮忙

请问如何解决这些问题

here is my .bashrc

# pre-existing bashrc file may have been moved to a file named
# "${HOME}/.bashrc.old". Check the commands in that file be
# sure they are still needed.

if [ -r ${HOME}/.bashrc.old ]
then
echo "----------------------------------------------"
echo "About to run commands in your old bashrc file."
echo "Delete the file .bashrc.old, or edit .bashrc if these commands"
echo "should not be run anymore."
echo "----------------------------------------------"
source ${HOME}/.bashrc.old
echo "----------------------------------------------"
echo "Done running commands in your old bashrc file."
echo "----------------------------------------------"
fi



here is my .bash_profile



#AUTION: if you choose to make adjustments to PATH,
# it is usually advisable to *add* to the existing PATH
# rather than resetting PATH completely.  By adding, there
# is less chance of inadvertently losing important elements.
# For example:  set path = ( $path ${HOME}/bin )
[ -r .acms.debug ] && echo EXITING .bashrc >&2

[ -r .acms.debug ] && echo ENTERED .bash_profile >&2
public=${public:-/public}

# All the usual setup is done by the following line.  Any additions
# you make should come after it.
#
[ -r $public/bash_profile.adjunct ] && . $public/bash_profile.adjunct

# When this file was first placed in your home directory, a
# pre-existing bashrc file may have been moved to a file named
# "${HOME}/.bashrc.old". Check the commands in that file be
# sure they are still needed.


# You may add commands to the end of this file as needed.
#
# CAUTION: if you choose to make adjustments to PATH,
# it is usually advisable to *add* to the existing PATH
# rather than resetting PATH completely.  By adding, there
# is less chance of inadvertently losing important elements.
# For example:  set path = ( $path ${HOME}/bin )
[ -r .acms.debug ] && echo EXITED .bash_profile >&2




import objectdraw.*;
import java.awt.*;
public class TouchyWindow extends WindowController{
public void OnMousePress( Location Point){
new Text("I'm Touched!", 40, 40, canvas);
}
public void OnMouseRelease( Location Point){
canvas.clear();
}
} 

使用任何文本编辑器将提供的
export
命令行添加到
.bashrc
的末尾。或者,对于不需要为嵌套shell进程进行调整的环境变量,请在
.bash\u profile
.profile
文件的末尾添加相应的行

更改完成后,您可以让Bash重新运行该文件以获取更改,方法是:

. .bashrc
或:

或:

…取决于您编辑的文件。但是,重新处理这些文件,特别是每次启动新的
bash
命令时都会处理的
.bashrc
文件,可能会调整shell提示等设置,这些设置可能会被设置为反映已调用的嵌套交互式shell会话的级别。为了避免这种情况,只需在每个打开的终端窗口中执行一次
export
命令行,为当前登录会话设置环境。编辑后的文件将在您下次登录时进行设置


请注意,这可能仍然无法正常工作,具体取决于您的GUI设置。如果您直接登录到shell提示符,它将起作用,但现在这种情况很少出现。如果
env
命令没有列出
CLASSPATH
环境变量,或者在您下次登录并在终端窗口的shell提示下输入
env
时没有列出正确的值,那么您必须了解如何为GUI的窗口管理器设置环境变量。如果有必要,请返回StackOverflow寻求帮助,您需要提供有关您正在使用的Unix/Linux版本以及GUI窗口管理器的详细信息。

能否编辑您的帖子,使代码位于代码块中,而问题不在其中?有一些很好的编辑器按钮可以帮助您完成这项工作。命令
javacTouchyWindow.java
的结果是什么?如果有错误,请给出错误。另请参见Oracle对类路径的解释。
%echo$CLASSPATH
的结果是什么?请参阅GIYF。它显示:TouchyWindow.java:1:错误:包objectdraw不存在导入objectdraw.*;^java:3:错误:找不到符号公共类TouchyWindow扩展WindowController{^symbol:类WindowController TouchyWindow.java:4:错误:在MousePress上找不到符号公共无效(位置点){^symbol:class Location Location:class TouchyWindow TouchyWindow.java:7:错误:在MouseRelease(位置点)上找不到符号public void ^public void OnMouseRelease(位置点){^symbol:类位置位置:类TouchyWindow TouchyWindow.java:5:错误:找不到符号新文本(“我被触摸了!”,40,40,画布);^symbol:类文本位置:类TouchyWindow TouchyWindow.java:5:错误:找不到符号新文本(“我被触动了!”,40,40,画布);^symbol:变量画布位置:类TouchyWindow TouchyWindow.java:8:错误:找不到符号画布。clear()^符号:可变画布位置:class TouchyWindow 7出错。老师说我们不必每次打开终端窗口时都执行导出命令行来设置当前登录会话的环境。以下是他的提示:(旁白:Unix/Linux允许您定义用于配置的环境变量。java类路径变量是一个有用的变量。如果您编辑$HOME/.bashrc并放置以下定义导出类路径=。:$HOME/objectdraw.jar,那么您编译/运行的任何使用objectdraw库的java程序
. .bash_profile
. .profile