com.jacob.com.*
> package and the
com.jacob.activeX
package. The
com.jacob.com.*
package contains classes map very closely to the com dispatch model with the
com.jacob.com.Dispatch
acting as the primary communication class. Dispatch operate as a function library with a set of static methods that map
very closely to the C++ Dispatch APIs provided to the COM layer.
com.jacob.activex.ActiveXComponent
can be used in place of Dispatch to provide a more object like API. The only exception to this guideline is that the
ActiveXComponent
class is always used to make the initial connection to the target dll/COM component.
jacob<platform>.<version.>.dll
Jacob 1.15 is build with VC++ 2005 statically linked into the DLL. This removes the need for a separate msvcr80.dll installation.
Jacob 1.13 is built with VC++ 2005 that creates a dependency on msvcr80.dll. Windows XP and later seem to already include the necessary components. NT/2000 and Server/2003 require that you download the Visual C 2005 redistributable package, vcredist_x86.exe from the Microsoft web site. Microsoft has a download available that supplies the necessary components. It is distributed as a redistributable package.
If you see the following message then you probably don't have the right C++ libraries.
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\apps\...\jacob.dll: This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problemVisual C redistributable installer SP1
dll path location and dll name customization |
||
java.library.path |
Standard Java property used to add the location of the jacob dll to the JVM's library path. (Added 1.11)
Example:
-Djava.library.path=d:/jacob/release/x86
|
|
jacob.dll.name |
Override the standard DLL name with a custom one. This stops jacob from using its 32bit/64bit detection and dll rendezvous
logic. Sometimes used when Jacob is bundled with another application and the application wishes to tie the jacob dll
version number to the application version number. (Added 1.14M7)
Example:
-Djacob.dll.name=MyFunkyDllName.dll
|
|
jacob.dll.name.x86 & jacob.dll.name.x64 |
Override the standard 32 bit DLL name with custom ones. Sometimes used when Jacob is bundled with another application and
the application wishes to tie the jacob dll version number to the application version number. (Added 1.14M7)
Example to override 32 bit dll name:
-Djacob.dll.name.x86=MyFunkyDllName-32bit.dll
|
|
Memory Management |
||
com.jacob.autogc |
Determines if automatic garbage collection is enabled. This is the only way to free up objects created in event callbacks.
Automatic garbage collection , based on Java gc rules, garbage collection can be enabled via the
com.java.autogc command line option.
This feature was added in release 1.9 is not fully debugged.
There are real reasons for managing the lifetime of JacobObjects on a per thread basis. Jacob normally manages the the com/Java
object lifetime as described in the
JacobComLifetime.html document. Some users have run into situations where they wish to try and let the Java GC lifetime
manage the lifetime of objects. This seems to usually be tied to long running threads or to objects created as part of
event callbacks. Code was added to let users try and let the JVM manage the object life cycles even though the
JacobComLifetime.html document says this is a bad idea. Added 1.9.
This value is cached at startup and cannot be changed on-the-fly via
System.setProperty();
The default value is
false
Example:
-Dcom.jacob.autogc=false
|
|
com.jacob.includeAllClassesInROT |
Acts as master switch for and <class_name>.PutInROT. This property determines if the (experimental) PutInROT property
is even checked. It was added in version 1.15 because the property check in PutInROT brok applets because they are not
allowed to check system properties at run time. com.jacob.includeAllClassesInROT is checked at class initialization which
is allowed.
The default value of this flag is true which matches all behavior prior to 1.13 and the default behavior for 1.13 on Setting this flag to false causes Jacob to check the and <class_name>.PutInROT property for every Jacob object that is created. |
|
<class_name>.PutInROT |
Lets a program specify that instances of certain classes are to not be inserted into the ROT. This experimental (1.13) feature
provides a mechanism for freeing VariantViaEvent objects that are created in Event threads. There is normally no way
to free those objects because the thread terminates outside of any normally MTA/STA Startup/Teardown code. Each event
occurs in a new thread and creates a new ROT entry so they grow without bounds.
This option may cause VM crashes in certain situations where windows memory is freed outside of the thread it was created
in but empirical evidence shows there are situations where this great reduces the long running memory footprint of applications
that process a lot of events.
This function is still experimental. The functionality was added 1.13. Some of this overlaps the experimental
com.jacob.autogc introduced in 1.9. See the ROT.java test program for an example of the effects of this option.
This value is checked every time and can be changed on-the-fly via System.setProperty();
Example: System.setProperty("com.jacob.com.VariantViaVariant.PutInROT","false");
Example: -Dcom.jacob.com.VariantViaVariant.PutInROT=false
|
|
Debugging and Troubleshooting |
||
com.jacob.debug |
Determines if debug output is enabled to standard out.
This value is cached at startup and cannot be changed on-the-fly via System.setProperty();
The default value is
false
Example:
-Dcom.jacob.debug=false
|
|
-XCheck:jni |
This turns on additional JVM checking for JNI issues. This is not an actual JACOB system property but a property used by
the JVM.
The default is "no additional checking" Example:
-XCheck:jni
|
dumpbin /version jacob.dll
. The dll version number is stored in the "image version" field of the "OPTIONAL HEADER VALUES" section. This information
from
The Microsoft msdn web site
-Djava.library.path=c:/dev/jacob/release/x86
.
Last Modified 4/2008 1.15