diff --git a/bindings/java/Makefile.am b/bindings/java/Makefile.am
index ce6bf54df260a24b9db78436aa1c9bd35cc804cc..d9afa2f1ff782ca5812f4777acde6c19dc18dd62 100644
--- a/bindings/java/Makefile.am
+++ b/bindings/java/Makefile.am
@@ -39,7 +39,7 @@ PROCESSOR_FAMILY = `uname -m | sed -e 's/^i.86/i386/' | sed -e 's/^x86_64/amd64/
 
 if HAVE_WIN32
 JINCLUDES = -I${JAVA_HOME}/include -I${JAVA_HOME}/include/win32
-LIBJINCLUDES = -L${JAVA_HOME}/jre/bin -lawt
+LIBJINCLUDES = -L${JAVA_HOME}/lib -ljawt
 JCH = javah
 else
 JINCLUDES = -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
diff --git a/bindings/java/src/Makefile.am b/bindings/java/src/Makefile.am
index 2a2d254afca239e83ed2ce0ad9fba6c1d77f4a11..c05ac9ec85fa51eb833c9bc98bf5c62d1c91822b 100644
--- a/bindings/java/src/Makefile.am
+++ b/bindings/java/src/Makefile.am
@@ -26,11 +26,25 @@ endif
 
 if HAVE_WIN32
 DATA_noinst_libjvlc = libjvlc$(LIBEXT) libjvlc$(LIBEXT).a
+LIBRARIES_libvlc = $(top_builddir)/src/libvlc.dll.a
+libjvlc_a_DEPENDENCIES = libjvlc.def $(LIBRARIES_libvlc)
+LDFLAGS_jvlc = `$(VLC_CONFIG) --libs libvlc`
+libjvlc_DATA = libjvlc$(LIBEXT)
 
-libjvlc.dll.a libjvlc.def: libjvlc$(LIBEXT)
-	$(DLLTOOL) -z libjvlc.def -l libjvlc.dll.a -D $< $(libjvlc_a_OBJECTS)
+libjvlcdir=$(srcdir)
+
+#libjvlc.dll.a libjvlc.def: libjvlc$(LIBEXT)
+#	$(DLLTOOL) -z libjvlc.def -l libjvlc.dll.a -D $< $(libjvlc_a_OBJECTS)
+
+libjvlc$(LIBEXT): $(libjvlc_a_OBJECTS) \
+                      $(libjvlc_a_DEPENDENCIES)
+		  $(CXXLINK) $(libjvlc_a_OBJECTS) \
+		        $(srcdir)/libjvlc.def \
+		        $(LIBRARIES_libvlc) -shared $(LIBRARIES_libvlc) $(LIBJINCLUDES) $(LDFLAGS_jvlc) \
+		        $(INCLUDED_LIBINTL)
+# Cygwin work-around, copied by other makefiles
+			@if test -f "$@.exe"; then mv -f "$@.exe" "$@"; fi
 
-libjvlc$(LIBEXT): $(libjvlc_a_OBJECTS)
 
 all: libjvlc.dll.a
 endif