Skip to content

Commit 7df7b17

Browse files
committed
Load DLLs independent of java.library.path
1 parent a1a181e commit 7df7b17

3 files changed

Lines changed: 24 additions & 6 deletions

File tree

integration-tests/windows-api-tests/pom.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,9 @@
146146
<groupId>org.apache.maven.plugins</groupId>
147147
<artifactId>maven-surefire-plugin</artifactId>
148148
<version>${maven-surefire-plugin.version}</version>
149+
<configuration>
150+
<argLine>-Djava.library.path=C:/Users</argLine>
151+
</configuration>
149152
</plugin>
150153
</plugins>
151154
</pluginManagement>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package net.codecrete.windowsapi.tests;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import static org.assertj.core.api.Assertions.assertThat;
6+
7+
class JavaLibraryPathTest {
8+
@Test
9+
void javaLibraryPath_isOverridden() {
10+
assertThat(System.getProperty("java.library.path")).isEqualTo("C:/Users");
11+
}
12+
}

windowsapi-code-generator/src/main/java/net/codecrete/windowsapi/writer/FunctionCodeWriter.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,18 @@ public class Apis {
6060
6161
""");
6262

63-
writer.println(" static {");
63+
writer.print("""
64+
static {
65+
var libraryPath = System.getenv("WINDIR") + "\\\\SYSTEM32\\\\";
66+
""");
6467
functions.stream().map(Method::dll).filter(Objects::nonNull).distinct().sorted().forEach(dll ->
6568
writer.printf("""
66-
System.loadLibrary("%s");
67-
""", dllName(dll)));
69+
System.load(libraryPath + "%s.dll");
70+
""", dllName(dll)));
6871
writer.print("""
69-
}
70-
71-
""");
72+
}
73+
74+
""");
7275

7376
boolean usesLastError = anyFunctionUsesLastError(functions);
7477

0 commit comments

Comments
 (0)