有没有办法让某人在没有看到代码的情况下运行我的Java程序?

时间:2013-07-03 19:22:10

标签: java jar javamail executable

所以基本上我做了一个终端相关的Java程序,并希望开始解决它,但我似乎无法找到一种方法来做到这一点,而不给他们我的代码。制作.jar文件时,它只适用于Windows。

当尝试在Linux(CentOS)上运行时,我得到了

  Exception in thread "main" java.lang.UnsupportedClassVersionError:

   Could not find the main class: MyClass. Program will exit.

我正在使用命令java -jar MyJar.jar在两者上运行它们。我在这个程序中使用JavaMail,这可能是一个问题。只有一个课程,里面有一个主要课程。

如果有人甚至有任何替代方法来使用jar文件来提供程序,而用户无法读取那些也很棒的代码。谢谢!

4 个答案:

答案 0 :(得分:3)

您实际用于编译和构建Jar的JDK比安装在客户端Linux机器上的JDK更新。这就是JVM抛出

的时候
Exception in thread "main" java.lang.UnsupportedClassVersionError:

要求您的客户通过在控制台

上运行以下内容来报告其Java版本
java -version

然后,如果您正在使用 Eclipse ,则相应地设置项目的目标运行时。如果您自己编译Java源文件

javac -target 1.4 source/MyClass.java 

答案 1 :(得分:0)

对我而言,问题是你在编译代码时编译的代码是不兼容的。例如,您使用JDK 1.7编译它,但CentOS OS仅安装了Java 1.5版本。 Here is some more detailed information on the matter.

至于你的问题的标题,不,你不必给他们java源代码来运行它。所以别的东西出了问题。最有可能是我给出的答案。

答案 2 :(得分:0)

答案 3 :(得分:0)

除了其他人描述的版本问题,以及您不需要分发.java文件这一事实外,您还需要在清单文件中设置Class-Path条目。您的应用程序jar文件引用JavaMail jar文件,您必须将应用程序jar文件和JavaMail jar文件传递给用户。为了做到这一点,这可能很棘手。您可能希望查看One-JAR来解决该问题。