Preheat your oven to 350°. Grease two 9-inch round cake pans with a little oil and line with parchment paper. In a large bowl, combine the oil, sugar, eggs, and vanilla. Sift together flour, baking powder, spices, and salt, and blend into the oil mixture until well combined. Drain the pineapple. Add the pineapple, carrots, coconut, and walnuts to the batter, and stir to combine. Divide the batter between pans and bake for 50 to 60 minutes, or until a cake tester comes out clean. To make the frosting, cream the butter with the cream cheese and vanilla. With the mixer on low, add the confectioners' sugar and blend. Cool cakes on a rack in their pans for 10 minutes. Invert and then reverse the cakes. cool on the rack until room temperature. Once cakes are completely cool, spread one-quarter of icing between the two layers, then frost top and sides.