Cannot open source file "arduino.h"

I am building a sketch that uses multiple class libraries. The classes are located in the library folder, each class in its own folder. In development, I occasionally encounter cases where one of the class libraries cannot find arduino.h and some other class definitions. Here is the entire sketch (slimmed down a bit):

//GenericRemoteController.ino
#include <GenericRemoteController.h>
GenericRemoteController *controller;

#if JOYSTICK_TYPE_SHIELD
#include <JoystickShield.h>
#elif JOYSTICK_TYPE_SIMPLE
#include <SimpleJoystick.h>
#endif

void setup()
{
	Serial.begin(115200);
	Serial.println(F("Initializing"));
	controller = new GenericRemoteController();
	controller->begin();
}
void loop(){}

Here is GenericRemoteController.h:

#ifndef _GENERICREMOTECONTROLLER_h
#define _GENERICREMOTECONTROLLER_h
#include "arduino.h"

#define JOYSTICK_TYPE_SIMPLE	true
#define JOYSTICK_TYPE_SHIELD	false
#if JOYSTICK_TYPE_SHIELD
#include <JoystickShield.h>
#elif JOYSTICK_TYPE_SIMPLE
#include <SimpleJoystick.h>
SimpleJoystick *joystick;
#endif
//	Define buffer sizes
#define COMMAND_BUFFER_SIZE		30
#define REPLY_BUFFER_SIZE		10

class GenericRemoteController {
 public:
	//	Constructor
	GenericRemoteController();

	//	Called from within setup function
	void begin();

	//	Called from within loop function
	void process();

	//	Communications buffers - used to construct
	//	messages to robot and replies to those messages.
	char commandBuffer[COMMAND_BUFFER_SIZE];
	int commandBufferIndex = 0;

	char replyBuffer[REPLY_BUFFER_SIZE];
};
#endif

Here is SimpleJoystick.h:

#ifndef _SIMPLEJOYSTICK_h
#define _SIMPLEJOYSTICK_h


#include "arduino.h"
class SimpleJoystick 
{
 public:
	SimpleJoystick();
	void begin();
};
#endif
And here is the compiler error list:
Severity	Code	Description	File	Line
Warning		In member function void GenericRemoteController::begin()	D:\Documents\Arduino\GenericRemoteController\GenericRemoteController.ino	-1
Error		16:2: error: expected ';' before 'joystick	D:\Documents\Arduino\GenericRemoteController\GenericRemoteController.ino	16
Error (active)	E1696	cannot open source file "arduino.h"	d:\Documents\Arduino\libraries\SimpleJoystick\SimpleJoystick.h	6
Warning		joystick = new SimpleJoystick()

The "expected ';' before 'joystick may be the culprit. If you can spot why this error is occurring or can help me make this better, I appreciate.

cannot open source file "arduino.h"

Isn't it called "Arduino.h" ?

joystick = new SimpleJoystick() I can't see that line of code anywhere, except in the error message.

I am using Visual Studio with Visual Micro as my IDE. When I use it to generate a new class, it uses the reference
#include "arduino.h"

The joystick object is created in two steps:

  1. SimpleJoystick *joystick; // This code is in GenericRemoteController and creates a global pointer to the object but doesn't create the object itself.
  2. joystick = new SimpleJoystick(); // this code is in the GenericRobotController begin method and is called during setup. Now references to joystick->doSomething(); should work. Iff I can get it to compile first.

Bottom line is that something is causing the search for "arduino.h" to fail and that is why I have made this post.

I am using Visual Studio with Visual Micro as my IDE. When I use it to generate a new class, it uses the reference
#include "arduino.h"

Is this IDE case-insensitive?

Bottom line is that something is causing the search for "arduino.h" to fail

So, have you got path to this file? Does it exist?

As TolpuddleSartre told you, you've miscapitalized Arduino.h.
Change all instances of this line:

#include "arduino.h"

To this:

#include "Arduino.h"

There seems to be a very similar problem here

The OP seems to have a history of posing questions, and never returning to them, to say whether or not the proposed solutions worked (or not) - I'll leave this thread now.

I'm also a little concerned that "a programmer for closing in on 50 years" can't properly form their own URL.

Changing "arduino.h" to "Arduino.h" makes no difference. I have checked that repeatedly. I have also tried <arduino.h> and <Arduinon.h>.

The problem always happens in an included class file. And it disappears sometimes without any changes on my part. I think it has something to do with how the compiler is configured, but that's way above my competence grade.

I am using Visual Studio with Visual Micro as my IDE.

Before posting here, the FIRST thing to do is try the standard IDE. If you encounter the same problem, feel free to post here. If not, then the problem is with the IDE you are using. This is NOT the Visual Studio forum OR the Visual Micro forum.