Let's start with the title:
Question Authors Should Be Able to Prevent or Remove Closed-As-Duplicates
Question authors are already able to prevent their questions from being closed as duplicates and are already able to reopen such questions.
The way to prevent a question from being closed as a duplicate is to anticipate possible responses. The author has to look at the question through the eyes of readers. If someone saw this question would they suggest a solution that might seem reasonable but would not work in this specific case? If the author is able to anticipate such responses, then they should formulate their question to clearly explain why their problem would not benefit from such solution.
The way to reopen such a question is to examine the question to which the "this is a duplicate of" link points and its answers. Then the author should edit the question to clearly explain why their problem would not benefit from such solution.
The explanation (or a summary of it that invites people to look at the question again) could be in a comment but I don't recommend putting it only in a comment because people don't always read comments or go down a long list of old comments. The explanation belongs to the body of the question.
In my explanation above I've bolded "clearly explain" because in a great many cases this is precisely where authors who want their question reopened fail. Instead of clearly explaining, they assert that their question is not a duplicate.
"My question is not a duplicate. Reopen it!"
"My question is not a duplicate because the solution to that other question does not apply. Reopen it!"
"My question is not a duplicate because I don't want to use an array!"
The first two examples above are terrible and won't prompt me to support reopening the question. The 3rd example might work in some very simple cases but in very many cases the question that would come up in the mind of readers is "why is an array not working for you?" The explanation must have some substance.
Another way authors fail to get their posts reopened is when their posts suffer from multiple problems. So maybe they make a convincing point regarding the fact that their post is not a duplicate but their post still suffers from being unclear or has some other flaw. Or they demonstrate that their post is not a duplicate of question A but then it sounds like a duplicate of question B.
When I review reopen requests I will not vote to reopen a question that has addressed one problem but still contains other problems, even if the original close reason is moot. There is no point in going through the exercise of reopening the question only to have other users then vote again to close it because the question is worthy of being closed for another reason than the original one.
You are suggesting a change to the way SE sites operate:
(Either there should be a prevention flag from author to do not mark to duplicate or author should have rights to remove duplicate link.)
No, there should not. Whatever powers question authors already have is all the power they should have. And the reason for this is because the contents on Stack Exchange sites really belong to the community. In a comment you said this:
(i.e. I have no rights for my own question)
I'm not sure that "right" is the right word here. You have some powers regarding your own questions but these powers are limited because, and this is very important, the posts you submit to Stack Exchange sites belong to the community on those sites.
Regarding the specific question that prompted you to post here, this is the reason you have given as to why it is not a duplicate:
Note* -JUnitCore() is not the option. It doesn't for my scenario. -I do not want to run Junit inside my main program. I want it to run as separate application.
The question that immediately arises for me is "why?" Why do you want to run it as a separate application. And more importantly, why can't you just then run your application and the junit stuff like you'd run any two separate applications? Indeed I see that Jason C in a comment has suggested a solution that amounts to the way one would run any two run-of-the-mill separate applications. And you replied "Seems good option to me or May be excellent idea.", which makes your question a duplicate of the myriad questions that have to do with running multiple applications from a script.