1

I'm new in Jmeter and I try to run distributed tests using this tool with next configuration:

  1. client(master) - Windows 7
    • Java version - 1.8.0_92 (7u79 is tried too)
    • JMeter, version - 2.13
  2. server(slave) - VM Ubuntu 14 (with using VirtualBox)
    • Jave version - 1.7.0_95
    • Jmeter version - 2.8.20130705

I've done and tried everything I found in official tutorial and on other posts, including stackoverflow posts, but any success as a result. I get the next error all the time, when I try to run test on server via client:

java.rmi.UnmarshalException: error unmarshalling return; nested exception is: java.lang.ClassNotFoundException: org.apache.jmeter.engine.RemoteJMeterEngineImpl_Stub (no security manager: RMI class loader disabled)

What I've tried in different combinations:

  • disable firewall on Ubuntu and Windows
  • using the same subnet
  • setting hostname in jmeter-server file:

    RMI_HOST_DEF=-Djava.rmi.server.hostname=172.29.148.49

  • creating .java.policy file with granting all permissions in jmeter/bin directory:

    grant { permission java.security.AllPermission; };

  • setting in jmeter-server file:

    -Djava.security.policy=file:/usr/share/jmeter/bin/.java.policy

  • setting all permissions in java.policy file (usr/lib/jvm/java-7-openjdk-amd64/jre/lib/security/java.policy)

In results, when I start jmeter-server on VM Ubuntu, it seems that everything is fine. I get:

log_file=jmeter-server.log java.io.FileNotFoundException: jmeter-server.log     (Permission denied)
[log_file-> System.out]
2016/04/25 17:13:52 INFO  - jmeter.util.JMeterUtils: Setting Locale to en_US
2016/04/25 17:13:52 INFO  - jmeter.JMeter: Loading user properties from:  /usr/share/jmeter/bin/user.properties
2016/04/25 17:13:52 INFO  - jmeter.JMeter: Loading system properties from: /usr/share/jmeter/bin/system.properties
2016/04/25 17:13:52 INFO  - jmeter.JMeter: Setting System property:    java.net.preferIPv4Stack=true
2016/04/25 17:13:52 INFO  - jmeter.JMeter: Setting System property: java.rmi.server.hostname=172.29.148.49
2016/04/25 17:13:52 INFO  - jmeter.JMeter: Setting System property: server_port=1099
2016/04/25 17:13:52 INFO  - jmeter.JMeter: Copyright (c) 1998-2012 The Apache Software Foundation
2016/04/25 17:13:52 INFO  - jmeter.JMeter: Version 2.8.20130705
2016/04/25 17:13:52 INFO  - jmeter.JMeter: java.version=1.7.0_95
2016/04/25 17:13:52 INFO  - jmeter.JMeter: java.vm.name=OpenJDK 64-Bit Server VM
2016/04/25 17:13:52 INFO  - jmeter.JMeter: os.name=Linux
2016/04/25 17:13:52 INFO  - jmeter.JMeter: os.arch=amd64
2016/04/25 17:13:52 INFO  - jmeter.JMeter: os.version=4.2.0-35-generic
2016/04/25 17:13:52 INFO  - jmeter.JMeter: file.encoding=UTF-8
2016/04/25 17:13:52 INFO  - jmeter.JMeter: Default Locale=English (United States)
2016/04/25 17:13:52 INFO  - jmeter.JMeter: JMeter  Locale=English (United States)
2016/04/25 17:13:52 INFO  - jmeter.JMeter: JMeterHome=/usr/share/jmeter
2016/04/25 17:13:52 INFO  - jmeter.JMeter: user.dir  =/usr/share/jmeter/bin
2016/04/25 17:13:52 INFO  - jmeter.JMeter: PWD       =/usr/share/jmeter/bin
2016/04/25 17:13:52 INFO  - jmeter.JMeter: IP: 127.0.1.1 Name: ubuntu FullName: ubuntu
Created remote object: UnicastServerRef [liveRef: [endpoint:[172.29.148.49:45755](local),objID:[-1533104d:1544dc4ef79:-7fff, 2602978299635569139]]]
2016/04/25 17:13:52 INFO  - jmeter.engine.RemoteJMeterEngineImpl: Starting backing engine on 1099
2016/04/25 17:13:52 INFO  - jmeter.engine.RemoteJMeterEngineImpl: IP address=172.29.148.49
2016/04/25 17:13:52 INFO  - jmeter.engine.RemoteJMeterEngineImpl: IP address  is a site-local address; this may cause problems with remote access.
    Can be overridden by defining the system property  'java.rmi.server.hostname' - see jmeter-server script file
2016/04/25 17:13:52 INFO  - jmeter.engine.RemoteJMeterEngineImpl: Creating RMI registry (server.rmi.create=true)
2016/04/25 17:13:52 INFO  - jmeter.engine.RemoteJMeterEngineImpl: Bound to registry on port 1099

But when I'm tryting to run Jmeter from client(master) on Windows, regardless GUI or non-GUI mode, I get the next error log trace:

2016/04/25 13:15:58 INFO  - jmeter.engine.DistributedRunner: Configuring remote engine: 172.29.148.49:1099 
2016/04/25 13:15:58 ERROR - jmeter.engine.DistributedRunner: Failed to create engine at 172.29.148.49:1099 java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
java.lang.ClassNotFoundException: org.apache.jmeter.engine.RemoteJMeterEngineImpl_Stub (no security manager: RMI class loader disabled)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
    at java.rmi.Naming.lookup(Unknown Source)
    at org.apache.jmeter.engine.ClientJMeterEngine.getEngine(ClientJMeterEngine.java:54)
    at org.apache.jmeter.engine.ClientJMeterEngine.<init>(ClientJMeterEngine.java:67)
    at org.apache.jmeter.engine.DistributedRunner.createEngine(DistributedRunner.java:237)
    at org.apache.jmeter.engine.DistributedRunner.getClientEngine(DistributedRunner.java:213)
    at org.apache.jmeter.engine.DistributedRunner.init(DistributedRunner.java:91)
    at org.apache.jmeter.gui.action.RemoteStart.doAction(RemoteStart.java:81)
    at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:81)
    at org.apache.jmeter.gui.action.ActionRouter.access$000(ActionRouter.java:40)
    at org.apache.jmeter.gui.action.ActionRouter$1.run(ActionRouter.java:63)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(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)
Caused by: java.lang.ClassNotFoundException:  org.apache.jmeter.engine.RemoteJMeterEngineImpl_Stub (no security manager: RMI  class loader disabled)
    at sun.rmi.server.LoaderHandler.loadClass(Unknown Source)
    at sun.rmi.server.LoaderHandler.loadClass(Unknown Source)
    at java.rmi.server.RMIClassLoader$2.loadClass(Unknown Source)
    at java.rmi.server.RMIClassLoader.loadClass(Unknown Source)
    at sun.rmi.server.MarshalInputStream.resolveClass(Unknown Source)
    at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
    at java.io.ObjectInputStream.readClassDesc(Unknown Source)
    at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
    at Java. I. ObjectInputStream. readObject0 (Unknown Source)
    at java.io.ObjectInputStream.readObject(Unknown Source)
    ... 25 more

Can anyone help with this issue.

Thank you a lot.

Mykola Kovsh
  • 21
  • 1
  • 3

1 Answers1

1

What I've tried in different combinations:

  • disable firewall on Ubuntu and Windows

Irrelevant

  • using the same subnet

Irrelevant.

  • setting hostname in jmeter-server file:
 RMI_HOST_DEF=-Djava.rmi.server.hostname=172.29.148.49

Irrelevant.

  • creating .java.policy file with granting all permissions in jmeter/bin directory:
grant { permission java.security.AllPermission; };

Irrelevant.

  • setting in jmeter-server file:
-Djava.security.policy=file:/usr/share/jmeter/bin/.java.policy

Irrelevant.

  • setting all permissions in java.policy file (usr/lib/jvm/java-7-openjdk-amd64/jre/lib/security/java.policy)

Irrelevant.

Your course of action is baffling. Neither the firewall nor the subnet nor the hostname nor the .policy file nor its name nor its contents have anything whatsoever to do with ClassNotFoundExceptions, either singly or in any combination, and it is mystifying why anybody could ever think otherwise: especially in relation to the security-policy actions, when the error message notes explicitly that a security manager is not installed.

The solution to a ClassNotFoundException is to deploy the class concerned, to the JVM concerned. In this case, the client. Jmeter provides this class in some JAR file and it is required on the CLASSPATH of the client.

Community
  • 1
  • 1
user207421
  • 305,947
  • 44
  • 307
  • 483
  • Thanks. I've tried your solution and also any results. I'm not very good in Java and Jmeter and maybe it is a reason. My solution was: to use the SAME Jmeter version on client and server. Because default ubuntu Jmeter version is 2.8, I've used it on client too. And it works. Thank you! – Mykola Kovsh Apr 29 '16 at 10:45