我有一个需要一些外部DLL才能工作的JAR文件。我用
加载这些DLLWITH dates AS (
SELECT @startDate AS [Date]
UNION ALL
SELECT DATEADD(DAY, 1, [Date])
FROM dates
WHERE [Date] < @endDate
)
SELECT s.[sid], s.[ecode], s.[scty], s.[sonm], d.[Date]
FROM [Z_ALI].[dbo].[M_STORE] s CROSS JOIN
dates d
WHERE DATEPART(WEEKDAY, d.[Date]) = @dayOfWeek AND
s.[sonm] = 'PENZKI STORE'
OPTION (MAXRECURSION 0);
如果我尝试不带任何参数执行JAR,则DLL不会被找到(显然):
System.loadLibrary("openalprjni");
如果我尝试使用Djava.library.path将路径添加到DLL,则也不起作用(请注意,我将新路径附加到现有路径上,而不是覆盖它)< / p>
> java -jar dist\ALPRTest.jar "param1" "param2"
> Exception in thread "main" java.lang.UnsatisfiedLinkError: no openalprjni in java.library.path
请注意,现在的错误是> java -Djava.library.path="%PATH%;D:\ALPRTest\path-to-dll" -jar dist\ALPRTest.jar "param1" "param2"
> Exception in thread "main" java.lang.UnsatisfiedLinkError: D:\ALPRTest\dist\openalprjni.dll: Can't find dependent libraries
而不是普通的Can't find dependent libraries
。我不知道那是什么意思。
程序的唯一运行方式是在Windows控制面板中手动将no xxx in java.library.path
添加到我的PATH变量中。
如果我使用D:\ALPRTest\path-to-dll
,则可以确认两个-XshowSettings:properties
完全相同,但是除非手动将此路径添加到PATH,否则JAR将不会运行。
java.library.path
为什么不起作用,但添加到PATH却起作用?