Rather than relying on a test for normality of the residuals, try assessing the normality with rational judgment. Normality tests do not tell you that your data is normal, only that it's not. But given that the data are a sample you can be quite certain they're not actually normal without a test. The requirement is approximately normal. The test can't tell you that. Tests also get very sensitive at large N's or more seriously, vary in sensitivity with N. Your N is in that range where sensitivity starts getting high. If you run the following simulation in R a number of times and look at the plots then you'll see that the normality test is saying "not normal" on a good number of normal distributions.
# set the plot area to show two plots side by side (make the window wide)
par(mfrow = c(1, 2))
n <- 158 # use the N we're concerned about
# Run this a few times to get an idea of what data from a
# normal distribution should look like.
# especially note how variable the histograms look
y <- rnorm(n) # n numbers from normal distribution
# view the distribution
hist(y)
qqnorm(y);qqline(y)
# run this section several times to get an idea what data from a normal
# distribution that fails the normality test looks like
# the following code block generates random normal distributions until one
# fails a normality test
p <- 1 # set p to a dummy value to start with
while(p >= 0.05) {
y <- rnorm(n)
p <- shapiro.test(y)$p.value }
# view the distribution that failed
hist(y)
qqnorm(y);qqline(y)
Hopefully, after going through the simulations you can see that a normality test can easily reject pretty normal looking data and that data from a normal distribution can look quite far from normal. If you want to see an extreme value of that try n <- 1000
. The distributions will all look normal but still fail the test at about the same rate as lower N values. And conversely, with a low N distributions that pass the test can look very far from normal.
The standard residual plot in SPSS is not terribly useful for assessing normality. You can see outliers, the range, goodness of fit, and perhaps even leverage. But normality is difficult to derive from it. Try the following simulation comparing histograms, quantile-quantile normal plots, and residual plots.
par(mfrow = c(1, 3)) # making 3 graphs in a row now
y <- rnorm(n)
hist(y)
qqnorm(y); qqline(y)
plot(y); abline(h = 0)
It's extraordinarily difficult to tell normality, or much of anything, from the last plot and therefore not terribly diagnostic of normality.
In summary, it's generally recommended to not rely on normality tests but rather diagnostic plots of the residuals. Without those plots or the actual values in your question it's very hard for anyone to give you solid advice on what your data need in terms of analysis or transformation. To get the best help, provide the raw data.