我有一个由大约10个不同的Eclipse项目组成的应用程序.有些项目必须使用Java 5构建,其他项目必须使用Java 6.我将这两个JDK分别在Eclipse的"已安装的JRE"列表中注册为"jdk5"和"jdk6".
适当的JRE位于每个项目的构建类路径上,该路径反映在.classpath文件中.但是,我团队中的其他成员正在他们的计算机上为这些JRE使用不同的符号名称.此外,.classpath文件被检入源代码管理.因此,人们需要对其.classpath文件进行本地更改才能构建.
我的直觉是为已安装的JRE列表选择一个命名约定,并要求所有团队成员坚持使用它.但是,这只会使设置新开发人员的过程变得复杂.真的,我只想说"用Java 5构建这个项目"和"用Java 6构建该项目".我不在乎它们的安装位置,或者它们的符号名称.Eclipse是否支持这种配置?
我正在使用使用第三方库的Java编写Google App Engine应用程序。运行应用程序并引用第三方库的行时,运行该应用程序时出现“ java.lang.NoClassDefFoundError”错误。创建普通的servlet时,此应用程序可以工作,因此,我很确定代码是正确的。
我正在Eclipse中进行开发。
应用程序引擎是否不允许第三方库?
我是否需要以其他方式配置类路径?
救命!!
最近,我开始使用Head First Java来学习Java,但我发现这本书缺乏有关设置Java的大量信息。它几乎告诉我下载JDK,并提到了有关类路径变量的内容。
我非常困惑,很明显,我的Java尚未设置为可以运行。所以...我进行了研究,并设法将/ bin /目录添加到CLASS_PATH中,并且还创建了一个名为JAVA_HOME的新系统变量,并将其指向bin文件夹。我不太确定该怎么做-这个话题对于其他每个程序员似乎都很容易,因为我找不到其他人在设置Java环境方面有如此困难。
因此,我现在可以编译并运行程序。我已经做了一些Hello World的事情,yada yada。现在,在第37页上,我们实际上将要做一些OOP的工作。这些是类:
class Movie {
String title;
String genre;
int rating;
void PlayIt() {
System.Out.println("Playing the movie");
}
}
Run Code Online (Sandbox Code Playgroud)
第二个:
public class MovieTestDrive {
public static void main(String[] args) {
Movie one = new Movie();
one.title = "Movie 1";
one.genre = "Movie 1 Genre";
one.rating = -2
two.title = "Movie 2";
two.genre = "Movie 2 Genre";
two.rating = -1
three.title = "Movie 3";
three.genre = "Movie 3 Genre";
three.rating = 3
}
} …Run Code Online (Sandbox Code Playgroud) 如何动态设置其他类路径,以便可以从hadoop工具类访问jar?我正在通过"hadoop jar"来完成我的工作.我需要类似"-libjars"开关的东西,不幸的是它只适用于映射器和缩减器,我的工具实现没有看到"libjars"提供的jar
导出"HADOOP_CLASSPATH = $ HADOOP_CLASSPATH:/path/to/my.jar && hadoop jar ..."似乎使工具可以访问"my.jar",但是"/ lib"文件夹中的作业jar内的库变得无法进入.
我有一个Leiningen project.clj文件如下:
(defproject insane-noises "1.0.0-SNAPSHOT"
:description "FIXME: write description"
:dependencies [[org.clojure/clojure "1.3.0"]
[overtone "0.6.0"]]
:source-paths ["/Volumes/ramdisk"]
:java-source-paths ["/Volumes/ramdisk"]
:native-path "/Volumes/ramdisk")
Run Code Online (Sandbox Code Playgroud)
现在,当我跑
$ lein repl
user=> (seq (.getURLs (java.lang.ClassLoader/getSystemClassLoader)))
Run Code Online (Sandbox Code Playgroud)
路径/ Volumes/ramdisk不会显示在路径中的任何位置.这是怎么回事?
为Leiningen设置课程路径的正确方法是什么?(它似乎也忽略了我环境中定义的CLASSPATH变量.)
编辑:回复评论
user=> (seq (.. Thread currentThread getContextClassLoader getURLs))
nil
Run Code Online (Sandbox Code Playgroud)
编辑:问题已解决.我在用
$ lein version
Leiningen 1.7.1 on Java 1.6.0_29 Java HotSpot(TM) 64-Bit Server VM
Run Code Online (Sandbox Code Playgroud)
但是,我显然使用了Lein 2.0的符号
我已经下载并安装了一个带有Maven的jar(如此处所述),但现在我需要在项目中需要它.我按照git README((require '[clj-http.client :as client]))上的说明操作,但我仍然收到此错误:
FileNotFoundException Could not locate clj_http/client__init.class or clj_http/client.clj on classpath: clojure.lang.RT.load (RT.java:430)
Run Code Online (Sandbox Code Playgroud) 我已经退出编程一段时间了,我又回到了它,我遇到了一个非常特殊的问题.在过去,每当我从Maven中编译测试代码时,它都会将测试源树中包含的所有*.xml资源文件复制到target/test-classes.但昨晚,在我目前的项目中,它不再这样做 - 这不是我的预期.每当我通过Maven或Intellij IDEA运行测试时,测试都会失败,因为它在类路径中找不到任何*.xml文件 - 它们从未被复制过.
我在我的计算机上使用完全相同的.pom文件和项目结构的旧项目,并且*.xml文件复制得很好.
为了解决这个问题,我将以下XML包含在我的Maven POM中:
<testResources>
<testResource>
<directory>src/test/java</directory>
<filtering>false</filtering>
<includes>
<include>**/*.xml</include>
</includes>
</testResource>
</testResources>
Run Code Online (Sandbox Code Playgroud)
虽然这解决了这个问题,但我仍然很好奇为什么我不得不告诉Maven手动将我的测试源树中的*.xml文件复制到我的target/test-classes目录.就像我说的那样,过去两年中的其他旧项目都是在没有我指定的情况下复制*.xml文件testResources.
什么可能导致这种行为?
我的项目有一组自定义的注释,可以存在于OSGi 4.3框架中部署的任何bundle中.我想在类路径中找到任何带有这些注释的类.我尝试为找到的每个类使用BundleWiring.listResources(...)和Bundle.loadClass(...).我用一小组bundle做了一些测试,它需要大约200MB的Permanent Generation JVM内存空间,因为所有的类都被加载了.
当程序意识到它们没有这些注释时,有没有办法释放加载的类PermGen内存空间?
有没有更好的方法在OSGi框架中查找带注释的类?
我需要运行带有自定义类路径的java命令.
在Windows上我需要输入:
java -cp foo;bar
Run Code Online (Sandbox Code Playgroud)
在Linux上我需要输入:
java -cp foo:bar
Run Code Online (Sandbox Code Playgroud)
我们目前有一个包含第一个版本的.bat文件和一个包含第二个版本的.sh文件.这在大多数情况下工作正常,但在Windows上的git-bash失败,这需要带有分号分隔符的shell脚本.
是否有任何系统独立的方式来编写这样的类路径?
我会想到类似的东西
java -cp foo -cp bar
Run Code Online (Sandbox Code Playgroud)
但这不是这种方式.
目前,我看到的唯一方法是让一些shell逻辑确定操作系统并从中生成正确的命令行.
java方式有更简单的方法吗?
我是Eclipse和UIMA的新手.我正在尝试在Eclipse Luna -j2ee平台上运行UIMA示例.我可以在示例中从终端运行cvd.sh.
当我尝试从"运行配置"运行示例时,我遇到如下错误:
Error: Could not find or load main class org.apache.uima.tools.cvd.CVD
<terminated>UIMA CAS Visual Debugger [Java Application]
<terminated, exit value: 1>/usr/lib/jvm/java-7-openjdk-i386/bin/java (22-May-2015 5:52:13 am)
Run Code Online (Sandbox Code Playgroud)
我试图从运行配置运行,我也看到其他示例的类似错误,如 -
Error: Could not find or load main class org.apache.uima.tools.AnnotationViewerMain
<terminated>UIMA Annotation Viewer [Java Application]
<terminated, exit value: 1>/usr/lib/jvm/java-7-openjdk-i386/bin/java (22-May-2015 6:33:43 am)
Run Code Online (Sandbox Code Playgroud)
可能是什么问题呢?
我觉得它可能是一些路径相关的问题,因为终端apache-uima/bin中的示例(至少其中一些)正在工作......
我正在使用debian,如果这有帮助的话.