function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Shane2017Shane2017 

output:Error: Could not find or load main class com.salesforce.dataloader.process.ProcessRunner

Hello,

I'm trying to call the data loader from Ruby. Here's the relevant code block:

stdout, stderr, status = Open3.popen2e( \
  {"JAVA_HOME" => 'C:\Program Files (x86)\Java\jre1.8.0_144'}, \
  "\"C:\\Users\\username\\AppData\\Local\\salesforce.com\\Data Loader\\bin\\process.bat\" " \
  + "\"C:\\Users\\username\\AppData\\Local\\salesforce.com\\Data Loader\\conf\" " \
  + "csvUpsertAccounts"
) { |stdin, stdout_and_stderr, wait_thr|
  pid = wait_thr.pid
  captured_stdout_and_stderr = stdout_and_stderr.read
  exit_status = wait_thr.value
}

and this is the error that I get:

output:Error: Could not find or load main class com.salesforce.dataloader.process.ProcessRunner

Does anyone have any ideas on what I can check?

Best regards,
Shane
Best Answer chosen by Shane2017
Alain CabonAlain Cabon
Hi,

You launch process.bat which launchs a class com.salesforce.dataloader.process.ProcessRunner that is in a zip file called jar in java.
dataloader-<version>.0.0-uber.jar

The complete command is like that for Windows: process.bat
"%JAVA_HOME%\bin\java" -cp ..\dataloader-36.0.0-uber.jar -Dsalesforce.config.dir=%1 com.salesforce.dataloader.process.ProcessRunner %PROCESS_OPTION%

You launch the jvm java (java.exe) with some parameters (the class path, -cp (here the jar file)) and finally the class. 

The problem is here -cp ..\dataloader-36.0.0-uber.jar   : relative path.

Try to change the relative path in process.bat for -cp c:\myfolder\dataloader-36.0.0-uber.jar  (absolute path)