If you use solidity with truffle, sometimes it is a good idea to delete the entire build subdirectory, it will recreated anyway as you make a new compile. As an example if you get the following error message: "Attempting to run transaction which calls a contract function, but recipient address ... is not a contract address" the resolution is simply delete and recreate the build folder. It happens regularly if you copy paste your solidity code for example between your local truffle environment and for instance remix.