# Jacob COM Bridge Problem mit dll



## neomon (21. September 2007)

Hallo zusammen,

ich hoffe ich finde hier ein paar Leute, die sich ein wenig mit COM Programmierung in Java bzw Jacob auskennen. Habe mir die Version 1.13 M4 runtergalden. Das Problem ist jetzt, dass ich folgenden Fehler bekomme:

Fehler bei...

x86 dll : 

Exception in thread "AWT-EventQueue-1" java.lang.UnsatisfiedLinkError: C:\WINNT\system32\jacob.dll: Diese Anwendung konnte nicht gestartet werden, weil die Anwenungskonfiguration nicht korrekt ist. Zur Problembehebung sollten Sie die Anwendung neu installieren

Habe auch eine 32bit Windows Version also es kann nicht dran liegen, dass ich die falsche der beiden dlls benutze habe es nämlich auch schon mit der amd64 dll ausprobiert.... 

Freue mich über jeden der hierzu etwas beitragen kann 

mfg andreas


----------



## Ronin-Jay (21. September 2007)

Wo liegt denn die dll auf Deinem Rechner? Habe mit Jacob leider noch keine Erfahrung, da ich mit JavaX arbeite, aber die Fehlermeldung klingt ganz danach, daß er die Treiber-Datei nicht finden kann...


----------



## neomon (21. September 2007)

Die liegt ganz normal unter C:\WINNT\system32, deswegen wundert mich das ja


----------



## kieste (24. September 2007)

Hallo,
ich hab auch das Problem mit der aktuellen Jacob Version (1.1.3 M5) unter Windows 2003 Server, unter XP Pro gehts. Wenn ich die 1.1.2 (final) nehme dann geht's bei mir auch auf dem 2003 Server. 

grüße
-s.


----------



## neomon (27. September 2007)

Habe jetzt auch mal die 1.12 genommen, mit der krieg ich den alten Fehler auch nich mehr ...

Allerdings kommt jetzt folgender Fehler : 


```
Exception in thread "AWT-EventQueue-1" java.lang.IllegalStateException: Dispatch not hooked to windows memory
	at com.jacob.com.Dispatch.throwIfUnattachedDispatch(Dispatch.java:335)
	at com.jacob.com.Dispatch.get(Dispatch.java:1311)
	at Dropzone.DTListenerJ.drop(DTListenerJ.java:37)
	at java.awt.dnd.DropTarget.drop(Unknown Source)
	at sun.awt.dnd.SunDropTargetContextPeer.processDropMessage(Unknown Source)
	at sun.awt.dnd.SunDropTargetContextPeer.access$800(Unknown Source)
	at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchDropEvent(Unknown Source)
	at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchEvent(Unknown Source)
	at sun.awt.dnd.SunDropTargetEvent.dispatch(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processDropTargetEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
```

Hier der zugehörige Sourcecode : 


```
public void drop(DropTargetDropEvent dtde) {
		ActiveXComponent xl = new ActiveXComponent("Outlook.Application");

		Dispatch explorer = Dispatch.get(xl,"ActiveExplorer").toDispatch();
		Dispatch selection = Dispatch.get(explorer, "Selection").toDispatch();
		Variant count = Dispatch.get(selection, "Count");

		for (int mailIndex = 1; mailIndex <= count.toInt(); mailIndex++ ) {

			Dispatch mailItem = Dispatch.call(selection, "Item", new Variant(mailIndex)).toDispatch();

			Variant senderName = Dispatch.get(mailItem, "SenderName");
			Variant subject = Dispatch.get(mailItem, "Subject");
			Variant body = Dispatch.get(mailItem, "Body");

			String emailFileName = subject.toString() +".txt";

			String fullPath = "C:\\bla" + File.pathSeparator + emailFileName;
			try {
				File email = new File(fullPath);
				PrintWriter writer = new PrintWriter( new FileWriter(email) );
				writer.println("From: "+ senderName );
				writer.println("Subject: "+ subject);
				writer.println("");
				writer.print( body );
				writer.close();
			}
			catch (IOException e) {
				System.out.println("IOException writing e-mail with subject: '"+ subject +"'");
				continue;
			}

			Dispatch attachments = Dispatch.get(mailItem, "Attachments").toDispatch();
				Variant attachmentCount = Dispatch.get(attachments, "Count");

				if ( attachmentCount.toInt() > 0 ) {

					for( int attachmentIndex = 1; attachmentIndex<=attachmentCount.toInt(); attachmentIndex++ ) {

						Dispatch attachment = Dispatch.call(attachments, "Item", new Variant(attachmentIndex)).toDispatch();
						Variant fileNameVariant = Dispatch.get(attachment, "FileName");
						String fileName = fileNameVariant.toString();

						Variant saveResult = Dispatch.call(attachment, "SaveAsFile", "C:\\bla"+File.pathSeparator+fileName);
					}
				}
			}

		}
```

Kann mir da jemand weiterhelfen?


----------



## kieste (27. September 2007)

wo ist denn Zeile 37 deiner Klasse in dem abgebildeten Code Block?

Grüße
-s.


----------



## neomon (1. Oktober 2007)

Zeile 37 ist diese heir : 


```
Dispatch selection = Dispatch.get(explorer, "Selection").toDispatch();
```


----------



## Painer (3. Februar 2008)

Hallo,

das Problem mit dem UnsatisfiedLinkError hatte ich auch. Das liegt daran dass die VC++ 2005 Runtime nicht installiert ist. Die gibt es bei Microsoft, hier ist auch der Link:

http://www.microsoft.com/downloads/...D9-AE1A-4A14-984D-389C36F85647&displaylang=en

Gruß,
Sven


----------

