I have an SQLAnywhere17 database running and can connect via SQLCentral, but Tomcat cannot connect because of missing dbjdbc17. The error message is java.lang.UnsatisfiedLinkError: no dbjdbc17 in java.library.path: /Applications/SQLAnywhere17/System/lib64 which is the directory that contains libdbjdbc17.dylib. sajdbc4.jar is in the catalina_home /lib folder and the Java/Extensions folder. I have set the system environment variable DYLD_LIBRARY_PATH to point to the lib64 folder (this is handled by sa_config.sh). I have verified the java.library.path is pointing to both the sajdbc4.jar and the associated dylib files. The SAP help portal page says that the java.library.path must contain the full path to libdbjdbc.dylib, but that file does not exist. I tried removing the 17 from the file name (to match the example) but this did not resolve anything- I'm pretty sure that's a misprint on the help portal page. I just don't know why the native library is invisible- I've triple checked the directory paths for any mistyping, the files are all in the right directories and the error message explicitly says it is looking at the right directory. I would love to know what I can do to understand why the link error occurs. If it matters, this is happening on an M1 mac however the tomcat installation, the JRE and SQLAnywhere are all x64 versions.

asked 17 Oct, 06:20

coreysj's gravatar image

coreysj
113
accept rate: 0%


It is a misprint. If you look elsewhere in the documentation, it is libdbjdbc17.dylib. You did not mention the SQLANY17 environment variable. It is essential that this be set and point to your SQL Anywhere install root.

permanent link

answered 18 Oct, 09:17

JBSchueler's gravatar image

JBSchueler
3.0k21258
accept rate: 18%

converted 18 Oct, 10:32

Mark%20Culp's gravatar image

Mark Culp
24.7k9138294

The problem is that a security update in macOS will not allow use of $DYLD_LIBRARY_PATH unless the parameter com.apple.security.cs.allow-dyld-environment-variables has been set to true. This meant that the sa_config shell script was not able to create its environment variables. I switched to using the pure java driver in jconn4.jar and that is working, so I am going to go with that.

permanent link

answered 19 Oct, 17:07

coreysj's gravatar image

coreysj
113
accept rate: 0%

2

As I mentioned, the setting of SQLANY17 is important. It is used by the SQL Anywhere software file location resolution gear as one of the techniques for locating libs and res files. Did you give that a shot?

(19 Oct, 17:48) JBSchueler
Replies hidden

Indeed, SQLAnywhere no longer depends on DYLD_LIBRARY_PATH.

(21 Oct, 15:57) Tim McClements

if i echo $SQLANY17 I correctly see /Applications/SQLAnywhere17/System which contains the lib64 folder. The libdbjdbc17.dylib and other required dylib files are in that folder (All that were included with SQLAnywhere installation). The UnsatisfiedLinkError shows the path to the folder, but indicates dbjdbc17 is not found.

(21 Oct, 17:45) coreysj
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×85
×15

question asked: 17 Oct, 06:20

question was seen: 139 times

last updated: 21 Oct, 17:45