No... I think the VM provided by my hardware is a distinct enough component that it is a good place to draw one sort of dividing line. The distinction between compiler and execution environment is blurry when you consider the various non-(hardware)-machine code languages like Perl, Python and Java. I suppose if you wanted to be ultra pedantic you could note that hardware is also a VM because things like ix86 are actually an API to whatever the hardware actually executes which itself can be an API, etc.
I don't think the meaningful thing is on whether the language has an eval-like construct. That is more about language design than it is about scripting language delineation. In fact, is there anything stoppping a person from implementing eval in Java? Certainly you can manipulate Java source code from within a Java program. You can execute the compiler - I'd just wonder if it is possible to load classes during runtime (and I suspect it is).