Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

.Net and .Net Core from Talend DI 6.4.1 ?

Hello 

 

I am using free-edition Talend DI 6.4.1

 

I am aware that this version on Talend can call C#.Net methods via tDotNetInstantiate and tDotNetRow 

 

The example I see in the Components Guide for tDotNetInstantiate and tDotNetRow refers to using .Net Framework and requires VC++ redistributable.

I have a number of questions:

 

1. I can not find JANET-WIN64.dll anywhere. I have several versions of VC++ redistributable installed (up to VC 2017) and searched the C: for this DLL. 

It does not exist in system32 either. The documentation says it is inside VC++. 

 

2. Does Talend 6.4.1 only support calling C#.Net for Framework ? Can I call classes/methods for .Net Core 2.0+ ?

 

thanks!

Labels (2)
1 Solution

Accepted Solutions
Anonymous
Not applicable
Author

I solved it.

To help others:

I used Windows Dependency Walker utility to analyse janet-win64.dll and it showed that it currently uses VC++ 2010 64-bit redistributable.

This fixed the problem.

So the Talend error message is completely wrong.

If new version of janet-win64.dll uses more recent VC++ then it needs to be installed.

There is nothing I could see in Talend documentation about it.

 

 

View solution in original post

5 Replies
Anonymous
Not applicable
Author

Found this one with help from Microsoft VC++ forums:

 

http://www.talendforge.org/wiki/doku.php?id=doc:dotnet

 

FWIW - it is very disappointing that Talend documentation has so many basic errors in it.

 

 

 

Anonymous
Not applicable
Author

I managed to get it working in Dev PC but when I deploy it on Prod Server then I get error:

 

janet-win64.dll: %1 is not a valid Win32 application

 

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Windows\System32\janet-win64.dll: %1 is not a valid Win32 application
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at org.talend.net.Object.loadLibrary(Object.java:201)
at org.talend.net.Object.<clinit>(Object.java:164)
at testdotnet.testdotnetcsharp_0_1.testdotnetcsharp.tDotNETInstantiate_1Process(testdotnetcsharp.java:377)
at testdotnet.testdotnetcsharp_0_1.testdotnetcsharp.runJobInTOS(testdotnetcsharp.java:1324)
at testdotnet.testdotnetcsharp_0_1.testdotnetcsharp.main(testdotnetcsharp.java:1173)

 

Sadly it does not tell me which exe/dll on Windows is the problem.

Can anyone help me debug this error ?

 

The wiki article does not cover deployment issues.

 

Could this error be due to a problem with Visual C++ redistributable version?

What version of VC++ redistributable is needed for Talend 6.4.1 ?

I have several of them installed in DEV but not all are installed in Prod.

 

Thank you.

 

Anonymous
Not applicable
Author

I solved it.

To help others:

I used Windows Dependency Walker utility to analyse janet-win64.dll and it showed that it currently uses VC++ 2010 64-bit redistributable.

This fixed the problem.

So the Talend error message is completely wrong.

If new version of janet-win64.dll uses more recent VC++ then it needs to be installed.

There is nothing I could see in Talend documentation about it.

 

 

Anonymous
Not applicable
Author

Hi,

 

I am getting the same issue, even I have installed VC++ 2015 redistributable package in my machine and copied janet-win64.dll in 'C:/Windows/System32/' still getting the below exceptions.

 

Please help.

 

[statistics] connecting to socket on port 4063
[statistics] connected
System.ArgumentNullException: Value cannot be null.
Parameter name: type
at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
at System.Activator.CreateInstance(Type type, Object[] args)
at Java_org_talend_net_Object_createInstanceLib(JNIEnv_* env, _jobject* _this, _jstring* className, _jobject* jAssembly, _jobjectArray* params, _jobjectArray* types)
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (0xe0434352), pid=8768, tid=0x0000000000003c3c
#
# JRE version: Java(TM) SE Runtime Environment (8.0_181-b13) (build 1.8.0_181-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.181-b13 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C [KERNELBASE.dll+0x3a388]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\Talend\TOS_DI-Win32-20180411_1414-V7.0.1\hs_err_pid8768.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

 

 

Regards

Bhupinder

Tobi1
Contributor
Contributor

Hi @bhu,

did you solve your issue? I have exactly the same issue. After copying the dll's into the java-bin directory, I receive the following error:

System.ArgumentNullException: Value cannot be null.
Parameter name: type
at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
at System.Activator.CreateInstance(Type type, Object[] args)
at Java_org_talend_net_Object_createInstanceLib(JNIEnv_* env, _jobject* _this, _jstring* className, _jobject* jAssembly, _jobjectArray* params, _jobjectArray* types)
#
# A fatal error has been detected by the Java Runtime Environment:

Any help would be really much appreciated!

Tobias