所以基本上我做了一个终端相关的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文件来提供程序,而用户无法读取那些也很棒的代码。谢谢!
答案 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)
关于问题标题:
模糊您的代码。不要直接打印你的名字,使用生成器方法。
http://en.wikipedia.org/wiki/Obfuscation_(software)
答案 3 :(得分:0)
除了其他人描述的版本问题,以及您不需要分发.java文件这一事实外,您还需要在清单文件中设置Class-Path条目。您的应用程序jar文件引用JavaMail jar文件,您必须将应用程序jar文件和JavaMail jar文件传递给用户。为了做到这一点,这可能很棘手。您可能希望查看One-JAR来解决该问题。