diff --git a/doc/language-support.xml b/doc/language-support.xml
index cb40be4bf57f..277f3115f736 100644
--- a/doc/language-support.xml
+++ b/doc/language-support.xml
@@ -236,7 +236,7 @@ twisted = buildPythonPackage {
Java
Java packages should install JAR files in
-$out/lib/java.
+$out/share/java.
diff --git a/pkgs/build-support/setup-hooks/set-java-classpath.sh b/pkgs/build-support/setup-hooks/set-java-classpath.sh
new file mode 100644
index 000000000000..76e8e42ca268
--- /dev/null
+++ b/pkgs/build-support/setup-hooks/set-java-classpath.sh
@@ -0,0 +1,13 @@
+# This setup hook adds every JAR in the share/java subdirectories of
+# the build inputs to $CLASSPATH.
+
+export CLASSPATH
+
+addPkgToClassPath () {
+ local jar
+ for jar in $1/share/java/*.jar; do
+ export CLASSPATH=''${CLASSPATH}''${CLASSPATH:+:}''${jar}
+ done
+}
+
+envHooks=(''${envHooks[@]} addPkgToClassPath)
diff --git a/pkgs/development/eclipse/ecj/default.nix b/pkgs/development/eclipse/ecj/default.nix
index 7b3940cc2e1e..432bdc72b3c8 100644
--- a/pkgs/development/eclipse/ecj/default.nix
+++ b/pkgs/development/eclipse/ecj/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, unzip, ant, jdk }:
+{ stdenv, fetchurl, unzip, ant, jdk, makeWrapper }:
let
version = "3.7.2";
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
sha256 = "0swyysbyfmv068x8q1c5jqpwk5zb4xahg17aypx5rwb660f8fpbm";
};
- buildInputs = [ unzip ant jdk ];
+ buildInputs = [ unzip ant jdk makeWrapper ];
unpackPhase = ''
mkdir "${name}"
@@ -25,16 +25,12 @@ stdenv.mkDerivation rec {
buildPhase = "ant build";
installPhase = ''
- mkdir -pv $out/lib/java
- cp -v *.jar $out/lib/java
+ mkdir -pv $out/share/java
+ cp -v *.jar $out/share/java
mkdir -pv $out/bin
- cat > $out/bin/ecj <