编译和运行Java应用程序

时间:2011-06-08 13:08:56

标签: java classpath

问题:

编译后我无法运行我的java应用程序。我的猜测是我的课程路径有问题。

为了清理我已经使用了IDE,Eclipse,我最初用它来编译和运行我的应用程序。它完美运行,但现在我需要严格通过终端/命令行运行它。原因是我遵循一条指导原则,如果它不能在命令行上运行,那么它就不存在了。 (帮助我真正了解我的申请)

无论如何这里是环境

OS

32位Linux AWS发行版(基于CentOS)

已安装的软件

  • yum install subversion *
  • yum install java *

应用程序结构

  • 人员/ SRC / COM / staffS3 /助手/ Constants.java
  • 人员/ SRC /净/ UploadFile.java

类路径

  • export CLASSPATH =“/ home / ec2-user / staff / lib / aws-java-sdk-1.2.1.jar:。”
  • export JAVA_HOME =“/ usr / lib / jvm / jre /”

编译

javac /home/ec2-user/staff/src/com/staffS3/Helpers/Constants.java /home/ec2-user/staff/src/net/UploadFile.java

正确编译(Atleast没有任何错误)

运行

java UploadFile

错误

    Exception in thread "main" java.lang.NoClassDefFoundError: UploadFile (wrong name: net/UploadFile)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    Could not find the main class: UploadFile. Program will exit.

已经有一段时间了。希望有人会注意到我遗失的那些小事(或巨大事情):)。

提前致谢

2 个答案:

答案 0 :(得分:4)

  

运行它

java UploadFile

你不能cd进入src/net目录。只需转到src并执行

java net.UploadFile

您需要站在一个目录中,java才能找到文件net/UploadFile.class

“Wrong Name ”错误消息(及其原因)描述得很清楚here


另请注意,通过-cp设置类路径是首选方法。即,尝试

java -cp .:/home/ec2-user/staff/lib/aws-java-sdk-1.2.1.jar net.UploadFile

最后,混合.java文件和.class文件是个坏主意。运行-d时使用javac开关指定类文件的目标目录。调用目录binbuild

答案 1 :(得分:2)

基本上看起来你正试图使用​​基本名称来运行它,不包括包。

尝试从“src”文件夹运行它,然后运行java net.UploadFile